我对Julia很陌生&这可能是一个非常愚蠢的问题:)我在Julia中运行计算&希望将结果输出到文本文件中。主程序包含一个for循环。在每个循环之后,应该在输出文件(追加)中添加包含该迭代结果的一行。每一行包含多个值&它们应该用空格分隔。
我查看了Julia &语法似乎与C++非常相似。我已经用下面的代码进行了测试。
using Distributions
f = open("hello.txt","w")
write(f,"Hello again.")
close(f)
numbers=rand(5)
f = open("hello.txt","a")
write(f,numbers)
close(f)
f = open("hello.txt","a")
numbers=rand(5)
print(numbers)
write(f,numbers)
close(f)
在这里,我将随机数字写到一个文件中,文件前面有一个hello语句。但是输出文件看起来是这样的,尽管数字数组包含浮点数(在控制台输出中验证)。
Hello again.�7D����?L'Uf���?8��f��?���>��?����XX�?�x�m��?Y�]���?�v�S���?x���]�?�zPL�?
当然,我做了件傻事。这一问题以前从未报道过。我不知道这里出了什么问题。
作为一种良好的做法,我们是否需要在追加每一行后(如果通过for循环追加数据)或在操作结束时使用close(f),将close(F)放在/flush(F)后面?
提前谢谢你。(Julia 1.6,Linux 64位)
发布于 2021-12-12 05:21:15
来自write
将值的规范二进制表示写入给定的I/O流或文件。
看起来您需要数字的“文本表示”,然后应该使用print
。但是,对于String
,二进制表示是相同的,所以write
与字符串一起工作。
julia> open("file.txt", "w") do io
println(io, "Hello")
println(io, rand(3))
end
shell> cat file.txt
Hello
[0.11312836652899494, 0.22752036377169926, 0.04622217336925327]
我们是否需要在追加每一行后(如果通过for循环追加数据)或在操作结束时使用close(f),就需要将close(F)放在/flush(F)后面?
这条流是flush
在close
上编辑的。
发布于 2021-12-12 05:26:36
另一个选项是将分隔文件模块与writedlm
函数一起使用:
using DelimitedFiles
julia> open("hello.txt", "a") do io
writedlm(io, numbers)
end
但根据我的理解,这似乎是专门用来写数字的。
https://stackoverflow.com/questions/70323712
复制相似问题