【问题标题】:How do I update output to the command line without printing to a new line?如何在不打印到新行的情况下将输出更新到命令行?
【发布时间】:2017-03-08 08:21:34
【问题描述】:

我想做一些事情,比如更新进度条和处理的文件的实时计数,但我不希望它跨越数百行。

具体来说,我正在处理大约 6500 封电子邮件,这需要几分钟时间。我想在不占用 6500 行的情况下打印已处理的数量。

我在 Python 2 中看到了一些解决方案,但在 Python 3 中我无法弄清楚。

【问题讨论】:

  • print(stuff, end='')
  • 我还需要它来替换现有的输出,而不是写“1个文件处理2个文件处理3个文件处理4个文件处理5个文件处理6个文件” ) 处理..."

标签: python python-3.x io command-line-interface


【解决方案1】:

您应该使用带有回车符'\r'sys.stdout 打印它。这里有一个例子:

import time
import sys

for i in range(100):
    sys.stdout.write(str(i+1) + '%\r')
    sys.stdout.flush()
    time.sleep(0.1)

试试吧!

【讨论】:

  • 感谢您的回答!不幸的是,输出不是我所期望的。这是我得到的: 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26% 27% 28% 29% 30% 31% 32% 33% 34% 35% 36% 37% 38% 39% 40% 41% 42% 43% 44% 45% 46% 47% 48% 49% 50% 51% 52% 53% 54% 55% 56% 57% 58% 59% 60% 61% 62% 63% 64% 65% 66% 67% 68% 69% 70% 71% 72% 73% 74% 75% 76% 77% 78% 79% 80% 81% 82% 83% 84% 85% 86% 87% 88% 89% 90% 91% 92% 93% 94% 95% 96% 97% 98% 99% 100%
  • 恐怕我还不知道如何使用灰色引号框,但这正是我得到的,所有从 1 到 100 的数字都没有换行符。它们按顺序打印,但不会覆盖现有值。
  • @CodyBrock 它应该可以工作! Here 你可以运行我的示例 sn-p!试试看!
  • 空闲。是这个问题吗?
  • @CodyBrock 是的,这在 IDLE 上不起作用(请参阅Here)。您应该编写一个 python 文件并从终端或命令提示符执行它
猜你喜欢
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2014-05-15
  • 1970-01-01
  • 2010-11-23
  • 2011-06-27
相关资源
最近更新 更多