【问题标题】:How to collect output and input from terminal in Julia如何在 Julia 中从终端收集输出和输入
【发布时间】:2021-09-04 18:18:23
【问题描述】:

我需要从终端收集所有内容并将其写入 txt 文件。朱莉娅语言 enter image description here

【问题讨论】:

  • 你的想象似乎是一个黑色方块
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: julia


【解决方案1】:

在 Julia 1.7 中,您可以这样做:

redirect_stdio(stdout="stdout.txt", stderr="stderr.txt") do
    println("hello")
    println(stderr, "hello error")
end

在较旧的 Julia 版本中,您需要自己实现此功能(代码取自 https://discourse.julialang.org/t/redirect-stdout-and-stderr/13424/3):

function redirect_to_files(dofunc, outfile, errfile)
    open(outfile, "w") do out
        open(errfile, "w") do err
            redirect_stdout(out) do
                redirect_stderr(err) do
                    dofunc()
                end
            end
        end
    end
end

现在可以用作:

redirect_to_files("stdout.txt","stderr.txt") do
    println("hello")
    println(stderr, "hello error")
end

如果您不想使用do 语法,您也可以自己打开和关闭流。

【讨论】:

  • 如何将信息收集到 txt 文件并打印到终端?
  • 在我的示例中,stdout.txtstderr.txt 只是文本文件。如果您想同时做这两件事,您可能需要使用 TranscodingStreams.jl,并创建一个不进行编码但将字节发送到控制台的流转码器。
猜你喜欢
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多