logo

줄리아의 파일 입출력(I/O) 총 정리 📂줄리아

줄리아의 파일 입출력(I/O) 총 정리

개요

줄리아의 파일 입출력에 관한 패키지와 함수를 정리한다.

요약

  • CSV: CSV.jl
    • 읽기
      • CSV.read("file_name.csv", DataFrame)
      • CSV.File("file_name.csv")
    • 쓰기: CSV.write("file_name.csv", df_data)
  • JSON: JSON3.jl, JSON.jl
    • 읽기
      • 문자열: read("file_name.json", String)
      • JSON3.Object: JSON3.read(cd*"/wonnyo.json")
      • 딕셔너리: JSON3.read(cd*"/wonnyo.json") |> Dict
    • 쓰기
      • JSON3.write("file_name.json", json_data)
      • open("file_name.json", "w") do io; JSON3.pretty(io, json_data); end
  • Pickle: PyCall.jl
    • 읽기: open("file_name.pkl") do f; pickle.load(f); end
    • 쓰기: open("file_name.pkl", "w") do f; pickle.dump(dict_data, f); end
  • Numpy: PyCall.jl
    • 읽기: open(joinpath(cd, "file_name.npy")) do f; np.load(f); end
    • 쓰기: open(joinpath(cd, "file_name.npy"), "w") do f; np.save(f, vector_data); end
  • MATLAB: MAT.jl
    • 읽기: matread("file_name.mat")
    • 쓰기: matwrite("file_name.mat", mat_data)
  • XLSX 파일: XLSX.jl
    • 읽기: XLSX.readtable("file_name.xlsx", "Sheet1") |> DataFrame
    • 쓰기: XLSX.writetable("file_name.xlsx", df_data)

CSV

using CSV, DataFrames

df = CSV.read("file_name.csv", DataFrame)     # CSV 파일을 데이터프레임으로 읽기
CSV.write(joinpath(cd, "file_name.csv"), df)  # 데이터프레임을 CSV 파일로 쓰기

# CSV 파일 그 자체로 읽기
csv_file = CSV.File("file_name.csv")

환경

  • 날짜: 2025/06/12
  • OS: Windows11
  • Version: Julia 1.11.3, CSV v0.10.15, DataFrames v1.7.0

JSON

using JSON3

str_from_json  = read("file_name.json", String)         # 문자열로 불러오기
json_object    = JSON3.read(cd*"/wonnyo.json")          # JSON3.Object 타입으로 불러오기
dcit_from_json = JSON3.read(cd*"/wonnyo.json") |> Dict  # 딕셔너리로 불러오기

# 문자열을 JSON으로 쓰기
json_data = JSON3.read("""{"property1": 1, "property2": 2, "property3": "test"}""")
JSON3.write("file_name.json", json_data)

# 예쁜 형식으로 쓰기
json_data = JSON3.read("""{"property1": 1, "property2": 2, "property3": "test"}""")
open("file_name.json", "w") do io
    JSON3.pretty(io, json_data)
end

환경

  • 날짜: 2025/06/12
  • OS: Windows11
  • Version: Julia 1.11.3, JSON3 v1.14.2

Pickle

  • 필요한 패키지: PyCall.jl
using PyCall
pickle = pyimport("pickle")

dict_data = Dict("key1" => "value1", "key2" => "value2")

# 딕셔너리를 pkl 파일로 쓰기
open("file_name.pkl", "w") do f
    pickle.dump(dict_data, f)
end

# pkl 파일을 딕셔너리로 읽기
dict_from_pkl = open("file_name.pkl") do f
    pickle.load(f)
end

환경

  • 날짜: 2025/06/12
  • OS: Windows11
  • Version: Julia 1.11.3, PyCall v1.96.4

Numpy

using PyCall
np = pyimport("numpy")

vector_data = [1.0, 2, 3]

# 벡터를 npy 파일로 쓰기
open(joinpath(cd, "file_name.npy"), "w") do f
    np.save(f, vector_data)
end

# npy 파일을 벡터로 읽기
vec_from_npy = open(joinpath(cd, "file_name.npy")) do f
    np.load(f)
end

환경

  • 날짜: 2025/06/12
  • OS: Windows11
  • Version: Julia 1.11.3, PyCall v1.96.4

MATLAB

using MAT

mat_data = Dict("matrix1" => [1.0 2.0; 3.0 4.0], "matrix2" => [5.0 6.0; 7.0 8.0])

matwrite("file_name.mat", mat_data)            # 딕셔너리를 mat 파일로 쓰기
mat_data_from_file = matread("file_name.mat")  # mat 파일을 딕셔너리로 읽기

환경

  • 날짜: 2025/06/12
  • OS: Windows11
  • Version: Julia 1.11.3, MAT v0.10.7

XLSX 파일

using XLSX
using DataFrames

df_data = DataFrame(Arabic = 1:5,
                    English = ["one", "two", "three", "four", "five"],
                    Korean = ["일", "이", "삼", "사", "오"])

XLSX.writetable("file_name.xlsx", df_data)

df_from_xlsx = XLSX.readtable("file_name.xlsx", "Sheet1") |> DataFrame

환경

  • 날짜: 2025/06/12
  • OS: Windows11
  • Version: Julia 1.11.3, XLSX v0.10.4