julia one-liner写一个tempfile并得到它的名字?

时间:2018-06-14 15:33:08

标签: julia

最简单/最清晰/最简单/最短的方法是什么?A)创建临时文件,B)写一个字符串,然后C)返回新创建的文件名?

这是迄今为止我所获得的最好成绩:

fname,io = mktemp(); write(io, "<contents>");
# use fname...

我可以用do end做一些聪明,有趣的事吗?有人有更好的建议吗? :)谢谢!

2 个答案:

答案 0 :(得分:4)

你可以做到

f = tempname()
write(f, "Hello")

如果需要“单行”,则可以放在同一行

f = tempname(); write(f, "Hello")

答案 1 :(得分:2)

一种方法是mktemp() .|> (path->path, io->(write(io, "<contents>"); close(io))) |> first(这只需要1分号/“行”来安全关闭io)。我猜do块主要用于多行代码:

julia> mktemp() do path,io 
           write(io, "<contents>")
           path
       end
"/var/folders/ft/nd_bm3z52152069y78vb71280000gn/T/tmpKLWTBD"

糟糕!上面的do-block方式会在完成后自动删除临时文件。这不应该只是自动close io像open?!