我是 Julia 的新手,這可能是一個非常愚蠢的問題 :) 我正在 Julia 中運行計算并想將結果輸出到文本檔案。主程式包含一個 for 回圈。在每個回圈之后,應該在輸出檔案(append)中添加一行包含該迭代結果的行。每行包含多個值,它們應該用空格分隔。
我檢查了 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Π??
當然,我在做一些愚蠢的事情。以前從未報告過此問題。我無法弄清楚這里出了什么問題。
作為一個很好的做法,我們是否需要在附加每一行之后放置 close(f)/flush(f)(在通過 for 回圈附加資料的情況下)或在操作結束時使用 close(f) 就足夠了?
先感謝您。(Julia 1.6,Linux 64 位)
uj5u.com熱心網友回復:
從檔案write:
將值的規范二進制表示寫入給定的 I/O 流或檔案。
看起來您想要數字的“文本表示”,然后您應該使用print. String然而,對于s,二進制表示是相同的,所以這就是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]
我們是否需要在附加每一行之后放置 close(f)/flush(f)(在通過 for 回圈附加資料的情況下)或在操作結束時使用 close(f) 就足夠了?
流被flush編輯close。
uj5u.com熱心網友回復:
另一種選擇是使用具有以下功能的分隔檔案模塊writedlm:
using DelimitedFiles
julia> open("hello.txt", "a") do io
writedlm(io, numbers)
end
但這似乎是專門針對我的理解寫數字的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382506.html
