gpt4 book ai didi

printing - 在 Julia 上同时写入多个文件

转载 作者:行者123 更新时间:2023-12-02 19:03:49 25 4
gpt4 key购买 nike

如何在 Julia 中同时打印到多个文件?除了以下之外还有更干净的方法吗:

for f in [open("file1.txt", "w"), open("file2.txt", "w")]
write(f, "content")
close(f)
end

最佳答案

从你的问题来看,我假设你的意思并不是并行写入(这可能不会加快速度,因为操作可能是 IO 绑定(bind)的)。

您的解决方案有一个小问题 - 如果 write 抛出异常,它不能保证 f 关闭。

以下是三种替代方法,可确保即使出现错误也能关闭文件:

for fname in ["file1.txt", "file2.txt"]
open(fname, "w") do f
write(f, "content")
end
end

for fname in ["file1.txt", "file2.txt"]
open(f -> write(f, "content"), fname, "w")
end

foreach(fn -> open(f -> write(f, "content"), fn, "w"),
["file1.txt", "file2.txt"])

它们给出相同的结果,因此选择取决于品味(您可以派生类似实现的更多变体)。

所有方法均基于以下open函数方法:

 open(f::Function, args...; kwargs....)

Apply the function f to the result of open(args...; kwargs...)
and close the resulting file descriptor upon completion.

请注意,如果实际上在某处抛出异常,处理仍然会终止(仅保证文件描述符将被关闭)。为了确保实际尝试每个写入操作,您可以执行以下操作:

for fname in ["file1.txt", "file2.txt"]
try
open(fname, "w") do f
write(f, "content")
end
catch ex
# here decide what should happen on error
# you might want to investigate the value of ex here
end
end

参见https://docs.julialang.org/en/latest/manual/control-flow/#The-try/catch-statement-1查看 try/catch 的文档。

关于printing - 在 Julia 上同时写入多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52990458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com