在我的Julia代码中,我想调用各种外部命令,这些命令从标准输入获取数据并在标准输出上产生输出。我想将数据存储在字符串中,并将它们读取和写入这些进程。确切地说,让我们说这个过程是tr [a-z] [A-Z]
。我的包装将是
function toupper(string)
fn, fh = mktemp()
print(fh, string)
close(fh)
result = pipeline(fn, `tr [a-z] [A-Z]`) |> readstring
rm(fn)
result
end
(这是Julia 0.6语法;用readstring
替换io->read(io,String)
)
我想要一个更清洁的方式来做这件事;理想情况下,命令printer(string)
创建一个产生字符串内容的流,这样上面的命令就会被编码为
toupper(string) = pipeline(printer(string), `tr [a-z] [A-Z]`) |> readstring
(实际上,会有很多像上面这样的命令,出于效率原因,我希望避免创建和删除所有这些临时文件)
好的,我找到了:打印机(字符串)可以编码为IOBuffer(string)
。