在我的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
(实际上,会有很多类似上面的命令,出于效率考虑,我希望避免创建和删除所有这些临时文件)
答案 0 :(得分:0)
好的,我发现它:打印机(字符串)可以被编码为IOBuffer(string)
。