如何在 Julia 中保存文件

log*_*ick 4 julia

在某些时候,(我认为是 Julia v0.7)您可以@save savepath thingtosave使用 Julia 保存文件。我尝试在 v0.7 上运行它以查看是否收到弃用警告,但即使在 0.7 上它也表示@save未定义。

如何使用 Julia 以编程方式保存文件?

crs*_*nbr 5

既然您提到了@save,大概是您使用的是JLD.jl或其继承者JLD2.jl

使用 JLD2 的一个简单示例是

julia> using JLD2

julia> @save "test.jld2" x

julia> x = nothing # "forgetting" x

julia> @load "test.jld2"
1-element Array{Symbol,1}:
 :x

julia> x
2×2 Array{Float64,2}:
 0.698264  0.319665
 0.252174  0.80799
Run Code Online (Sandbox Code Playgroud)

相比之下write,这些包基于HDF5(通过HDF5.jl)。它们几乎允许您存储任意的 Julia 对象。HDF5(不一定是 JLD/JLD2)是一种几乎所有编程语言和许多程序(例如 Mathematica)都支持的文件格式。与read/相比,它适用于长期存储,write这在未来的 Julia 版本中可能会发生变化。

请注意,这不会出现在 0.7 中,因为它是一个包功能,而不是 Base(或 stdlib)的一部分。

  • 它与“写”有很大不同。它基于HDF5。将 JLD/JLD2/HDF5 视为更高阶的二进制格式(我认为“write”是更底层的格式)。另一点是 HDF5 是一种长期数据存储格式,而据我所知,“write”底层的二进制序列化可能会在未来的 Julia 版本中发生变化。 (2认同)
  • 但值得一提的是,JLD.jl 现在/曾经处于几乎没有人关心维护它的状态(并且 JLD2.jl 不是功能等效的直接替代品)。因此,如果您确实关心长期保证,那么使用底层 HDF5.jl 可能会更好。 (2认同)