向不同类型的文件读写数据¶
本演示旨在展示从文件读取数据和向文件写入数据的基本功能。
文件分配和处理的结构是相同的:首先我们向文件写入内容,然后从中读取先前写入的数据。
首先,我们用项目文件夹为所有文件声明一个公共路径。
In [ ]:
Pkg.add(["CSV", "MAT"])
In [ ]:
path = "$(@__DIR__)/";
CSV¶
让我们执行对 CSV 文件的写入和读取。为此,我们需要 CSV 和 DataFrames 库。
In [ ]:
using CSV, DataFrames
In [ ]:
df = DataFrame(rand(10, 10), :auto)
Out[0]:
In [ ]:
CSV.write(path * "data.csv", df)
Out[0]:
In [ ]:
Matrix(CSV.read(path * "data.csv", DataFrame))
Out[0]:
TXT¶
现在我们来实现文本文档的写入和读取。在这种情况下,我们不需要任何第三方库。
In [ ]:
write(path * "data.txt", "Пример")
Out[0]:
In [ ]:
open(io->read(io, String), path * "data.txt")
Out[0]:
文本¶
现在我们来读写 MAT 文件。为此,我们将使用 MATLAB 和 MAT 库。前者支持 MATLAB 语法,后者简化了与 MATLAB 文件的交互。
In [ ]:
using MATLAB, MAT
In [ ]:
mat"p = genpath($path); addpath(p);"
In [ ]:
a = [1 2 3]
mat"a=$a"
mat"save($path + string('data.mat'),'a')"
In [ ]:
b = matopen(path * "data.mat")
read(b, "a")
Out[0]:
JLD2¶
现在我们来看看 JLD2。这些文件将变量存储为Engee中的列表。
In [ ]:
using FileIO
In [ ]:
save(path * "example.jld2", Dict("A" => "test", "B" => 12))
In [ ]:
load(path * "example.jld2")
Out[0]:
In [ ]:
b = load(path * "example.jld2", "B")
Out[0]:
输出¶
在本演示中,我们了解了创建和读取Engee中使用的主要文件类型的能力。