在Julia中使用JLD2加载数据是否有大小限制?
相同的代码:
using JLD2
using FileIO
exp=load("myfile.jld2");
似乎可以正常工作,直到达到一定大小的数据为止。对于我运行的一些实验,文件为5GB,我获得以下信息:
加载“ /pathtofile/myfile.jld2”时遇到错误。 致命错误:
错误:EOF错误:读取文件结尾
Stacktrace:
[1] handle_error(:: EOFError,:: File {DataFormat {:JLD2}})在/path/.julia/packages/FileIO/Y0Lre/src/error_handling.jl:80
[2] handle_exceptions(:: Array {Any,1},:: String)在/path/.julia/packages/FileIO/Y0Lre/src/error_handling.jl:75
[3]#load#27(:: Base.Iterators.Pairs {Union {},Union {},Tuple {},NamedTuple {(),Tuple {}}},:: Function,:: File { DataFormat {:JLD2}})在/path/.julia/packages/FileIO/Y0Lre/src/loadsave.jl:193
[4] load(:: File {DataFormat {:JLD2}})在/path/.julia/packages/FileIO/Y0Lre/src/loadsave.jl:172
[5]#load#13(:: Base.Iterators.Pairs {Union {},Union {},Tuple {},NamedTuple {(),Tuple {}}},:: Function,:: String)在/path/.julia/packages/FileIO/Y0Lre/src/loadsave.jl:118
[6] load(:: String)在/path/.julia/packages/FileIO/Y0Lre/src/loadsave.jl:118
[7]顶级范围在none:0
我尝试使用jldopen,我完全没有使用经验,但是我也收到类似的错误消息。
我该怎么办?
而且,顺便说一句,load和jldopen(“ my file.jld2”,“ r”)之间有什么区别?
我在Mac OSHighSierra 10.13.6上使用的是Julia版本1.0.2。
答案 0 :(得分:0)
我定期读取> 5GB的文件,没有问题。因此,我认为由于某种原因,您的文件未正确写入。错误消息也表明了这一点。
要回答另一个问题,load("myfile.jld2")
和jldopen("myfile.jld2", "r")
之间的区别在于前者将文件的所有内容加载到字典中,而后者打开文件并返回{{1} }对象,可用于对数据文件进行细粒度访问。例如,它允许您将多个数据字段写入同一文件(请注意,多个JLDFile
命令将覆盖同一文件)。
演示:
save