【问题标题】:Python overwrite new line not behaving as expected [duplicate]Python覆盖新行不符合预期[重复]
【发布时间】:2013-12-20 08:58:23
【问题描述】:

我正在尝试将文本输出到标准输出,例如覆盖之前的文本

for i in range(12):
    print i

但我每次都替换以前的值而不是出现在新行上 从查看之前有很多类似问题的帖子来看,似乎有几种方法可以做到这一点,可能是最简单的方法(对于 Python 3.x on)

for i in range(12):
    print(i,end="\r")

有时在 print 语句的末尾加上逗号,有时没有。但是,没有逗号,我根本没有输出,而有了逗号,我得到了

(None,)
(None,)
(None,)
...

这可能与我的终端有关吗?无论我尝试之前发布的哪个解决方案,我都会得到类似的结果。 感谢您的帮助!

【问题讨论】:

  • 那么..你是哪个版本的?

标签: python


【解决方案1】:

如果您在终端中执行此操作,您将看不到任何输出,因为 for 循环完成得太快,您无法看到输出发生变化。循环完成后,终端的提示符会覆盖输出。

试试这个:

>>> for i in range(9999999):
...     print(i, end="\r")

我很惊讶您在省略逗号时没有收到语法错误。

【讨论】:

  • 我认为当 OP 谈到在末尾添加逗号时,他的意思是 print(i, end="\r"),。这将构造一个包含 print 调用结果的 1 元素元组,并且由于这是在交互式终端中,因此会打印该元组。
  • 太好了,这正是正在发生的事情。谢谢!另外,是的,我的意思是 print(i, end="\r"),用“逗号结尾”
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2018-08-20
  • 1970-01-01
  • 2020-10-29
相关资源
最近更新 更多