朱莉娅:用管道将常规输入从字符串处理

时间:2019-04-05 12:36:26

标签: julia io-redirection

在我的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

(实际上,会有很多类似上面的命令,出于效率考虑,我希望避免创建和删除所有这些临时文件)

1 个答案:

答案 0 :(得分:0)

好的,我发现它:打印机(字符串)可以被编码为IOBuffer(string)