Чтение и запись данных в различные типы файлов
Цель данной демонстрации – показать основные функции для чтения данных из файлов и записи данных в них.
Структура задания и обработки файлов однотипна: сначала записываем что-то в файл, а потом читаем из него ранее записанные данные.
Для начала объявим общий для всех файлов путь с папкой нашего проекта.
path = "$(@__DIR__)/";
CSV
Выполним запись и чтения в CSV-файл. Для этого нам понадобятся библиотеки CSV и DataFrames.
using CSV, DataFrames
df = DataFrame(rand(10, 10), :auto)
10×10 DataFrame
Row │ x1 x2 x3 x4 x5 x6 x7 ⋯
│ Float64 Float64 Float64 Float64 Float64 Float64 Float64 ⋯
─────┼──────────────────────────────────────────────────────────────────────────
1 │ 0.782691 0.17554 0.219225 0.583233 0.452437 0.911176 0.86707 ⋯
2 │ 0.676087 0.796517 0.952582 0.0308405 0.917537 0.150331 0.36803
3 │ 0.291708 0.207226 0.504047 0.681091 0.76736 0.292621 0.05860
4 │ 0.988417 0.880329 0.234281 0.634055 0.0169464 0.967213 0.64282
5 │ 0.610994 0.697366 0.0371445 0.310867 0.605903 0.101713 0.29765 ⋯
6 │ 0.649429 0.98973 0.215706 0.895941 0.065116 0.281971 0.71633
7 │ 0.988582 0.374247 0.843371 0.654476 0.652337 0.0621881 0.34528
8 │ 0.174392 0.210649 0.357041 0.671468 0.842705 0.626445 0.69641
9 │ 0.291343 0.035325 0.0164157 0.138684 0.850454 0.67106 0.97699 ⋯
10 │ 0.680563 0.687006 0.882647 0.582454 0.374107 0.274518 0.12354
4 columns omitted
CSV.write(path * "data.csv", df)
"/user/start/examples/base_simulation/reading_and_writing_files/data.csv"
Matrix(CSV.read(path * "data.csv", DataFrame))
10×10 Matrix{Float64}:
0.782691 0.17554 0.219225 0.583233 … 0.00160441 0.389145 0.112194
0.676087 0.796517 0.952582 0.0308405 0.697571 0.254551 0.983581
0.291708 0.207226 0.504047 0.681091 0.958023 0.448821 0.755106
0.988417 0.880329 0.234281 0.634055 0.438598 0.663057 0.306334
0.610994 0.697366 0.0371445 0.310867 0.965925 0.0795114 0.112329
0.649429 0.98973 0.215706 0.895941 … 0.608109 0.645418 0.290919
0.988582 0.374247 0.843371 0.654476 0.127029 0.83555 0.695415
0.174392 0.210649 0.357041 0.671468 0.808247 0.968789 0.507406
0.291343 0.035325 0.0164157 0.138684 0.495211 0.267949 0.522488
0.680563 0.687006 0.882647 0.582454 0.983522 0.865961 0.312841
TXT
Теперь реализуем запись и чтение в текстовый документ. В данном случае нам не потребуются никакие сторонние библиотеки.
write(path * "data.txt", "Пример")
12
open(io->read(io, String), path * "data.txt")
"Пример"
MAT
Теперь выполним чтение и запись в MAT-файл. Для этого воспользуемся библиотеками MATLAB и MAT. Первая поддерживает синтаксис MATLAB, а вторая упрощает взаимодействие с файлами MATLAB.
using MATLAB, MAT
mat"p = genpath($path); addpath(p);"
a = [1 2 3]
mat"a=$a"
mat"save($path + string('data.mat'),'a')"
b = matopen(path * "data.mat")
read(b, "a")
1×3 Matrix{Int64}:
1 2 3