【问题标题】:Write output in the same place in the console在控制台的相同位置写入输出
【发布时间】:2016-07-01 11:55:29
【问题描述】:

我喜欢在 IJulia 笔记本中工作,并希望在同一行上一遍又一遍地打印某些进程的状态。

以下面链接中给出的示例为例,我们需要一些输出:

Downloading File FooFile.txt [47%]

并且想避免这样的事情:

 Downloading File FooFile.txt [47%]
 Downloading File FooFile.txt [48%]
 Downloading File FooFile.txt [49%]

如果是 Python,我找到了答案 here

什么是解决方案?

【问题讨论】:

  • 这个问题为什么会引起反对票并不明显,这是一个很好的例子,说明为什么您应该始终考虑发表评论来解释您的反对票。我投票支持 0。
  • 也许有人今天过得很糟糕,想投反对票。我发现在这里回答并提供这些初学者问题真是太好了,至少我从中受益匪浅。

标签: julia ijulia-notebook


【解决方案1】:

Python 答案中的“魔法”并不是 Python 独有的……它只是 \r 字符:它将光标位置重置到行首(不创建新行)。如果您的终端支持这样的光标移动,后续的打印指令只会覆盖之前的文本。

在朱莉娅:

print("Download progress: $(progress)%   \r")
flush(stdout)

您还可以查看ProgressMeter.jl 以获得更高级的光标移动和输出。

【讨论】:

  • 似乎工作,但它看起来像笔记本在移回时清晰,所以“\r”应该是新消息中的第一个,让文本在打印之间保留。
  • 谢谢!拥有这样一个最小的工作示例非常棒。我之前看过 ProgressMeter,但被所有的花里胡哨弄糊涂了。
  • Julia 1.0 现在是flush(stdout),所以没有大写字母。
猜你喜欢
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2015-05-07
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多