【发布时间】:2016-08-28 18:34:03
【问题描述】:
在 julia 中,我想在文件中写入一个变量和他的类型,以便以后重用它。像这样:
var = Float64(15)
stream = open("foo.dat", "w")
write(stream, typeof(var))
write(stream, var)
close(stream)
stream = open("foo.dat", "r")
typevar = read(stream, DataType)
var = read(stream, typevar)
close(stream)
第三行不行:
ERROR: LoadError: MethodError: `write` has no method matching write(::IOStream, ::Type{Float64})
Closest candidates are:
write(::IO, ::Any)
我该怎么做?谢谢你:)
【问题讨论】:
-
您查看过 JLD 包吗?您可以使用它来存储完整的 Julia 对象,其中包括它们的类型。
-
另外,根据您的需要,这甚至可能没有必要。例如,如果您只有一个
Float64对象数组,那么您可以使用writedlm将其写入 .txt 文件,然后readdlm将其读回。readdlm将采用可选的参数来指定读回数据时的类型。 -
谢谢你迈克尔 :) 我看 JLD 和 HDF5 包。 writedlm 写文本,但我会写二进制。
-
好吧,我不确定,但我不知道将文件类型写入规范二进制文件的方法 - 我怀疑可能没有办法,因为文件类型因语言而异,但我很容易出错。但是,作为一种解决方法,您可以在文件的开头写一个额外的数字或字符来表示文件类型,然后保留一个字典,将它们映射到文件类型。有点小技巧,但它可能会成功。
-
JLD 是正确的解决方案。你得到什么错误?
标签: julia