Engee 文档
Notebook

读取和写入数据到各种文件类型

本演示的目的是展示从文件读取数据和向文件写入数据的基本功能。

任务和文件处理的结构是相同的:首先我们将某些内容写入文件,然后从中读取以前记录的数据。

首先,我们将为包含项目文件夹的所有文件声明一个公共路径。

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]:

10 rows × 10 columns (omitted printing of 2 columns)

x1x2x3x4x5x6x7x8
Float64Float64Float64Float64Float64Float64Float64Float64
10.7826910.175540.2192250.5832330.4524370.9111760.8670760.00160441
20.6760870.7965170.9525820.03084050.9175370.1503310.3680380.697571
30.2917080.2072260.5040470.6810910.767360.2926210.05860940.958023
40.9884170.8803290.2342810.6340550.01694640.9672130.6428220.438598
50.6109940.6973660.03714450.3108670.6059030.1017130.2976520.965925
60.6494290.989730.2157060.8959410.0651160.2819710.7163310.608109
70.9885820.3742470.8433710.6544760.6523370.06218810.3452840.127029
80.1743920.2106490.3570410.6714680.8427050.6264450.6964140.808247
90.2913430.0353250.01641570.1386840.8504540.671060.9769920.495211
100.6805630.6870060.8826470.5824540.3741070.2745180.123540.983522
In [ ]:
CSV.write(path * "data.csv", df)
Out[0]:
"/user/start/examples/base_simulation/reading_and_writing_files/data.csv"
In [ ]:
Matrix(CSV.read(path * "data.csv", DataFrame))
Out[0]:
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脧脗脭脴

现在我们将在文本文档中实现写作和阅读。 在这种情况下,我们不需要任何第三方库。

In [ ]:
write(path * "data.txt", "Пример")
Out[0]:
12
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]:
1×3 Matrix{Int64}:
 1  2  3

JLD2

现在考虑JLD2。 这些是将变量存储在Engee中作为列表的文件。

In [ ]:
using FileIO
In [ ]:
save(path * "example.jld2", Dict("A" => "test", "B" => 12))
In [ ]:
load(path * "example.jld2")
Out[0]:
Dict{String, Any} with 2 entries:
  "B" => 12
  "A" => "test"
In [ ]:
b = load(path * "example.jld2", "B")
Out[0]:
12

结论

在本演示中,我们研究了创建和读取Engee中使用的主要文件类型的可能性。