【问题标题】:python: print using carriage return and comma not workingpython:使用回车和逗号打印不起作用
【发布时间】:2012-06-16 14:32:47
【问题描述】:

我需要循环打印一行(Python 3.x)。环顾四周,我将这一行放在我的代码中:

print('{0} imported\r'.format(tot),)

但是,它在循环时仍会打印多行。我也试过了

sys.stdout.write('{0} imported\r'.format(tot))

但这不会将 anything 打印到控制台...

有人知道这是怎么回事吗?

【问题讨论】:

  • sys.stdout.write() 为我工作.. 你有import sys。您是否要在同一行上叠加输出?
  • 如果你想从 python 2.x 中获得与print text, 相同的效果,你需要使用end 参数,如print(text, end='')。函数参数末尾的逗号无效。
  • 不确定“来自 2.x”。 print(text, end='') 行在 = 处给我一个语法错误。

标签: python newline carriage-return


【解决方案1】:

我更喜欢使用 Jan 的解决方案,但是这样:

values = range(0, 101)
for i in values:
  print ("Complete: ", i, "%", end="\r")
print ()

【讨论】:

    【解决方案2】:

    如果你想覆盖你的最后一行,你需要添加 \r(字符返回)和 end="",这样你就不会转到下一行。

    values = range(0, 100)
    for i in values:
        print ("\rComplete: ", i, "%", end="")
    print ("\rComplete: 100%")
    

    【讨论】:

      【解决方案3】:

      在第一种情况下,某些系统会将\r 视为换行符。在第二种情况下,您没有flush 行。试试这个:

      sys.stdout.write('{0} imported\r'.format(tot))
      sys.stdout.flush()
      

      正如 Levon 提醒我的那样,并非所有系统都需要冲洗线路 - 但以这种方式使用 \r 通常是个好主意。

      【讨论】:

      • @kevlar1818 正如我在评论中提到的,这对我有用(即使没有刷新输出缓冲区)......奇怪
      • sys.stdout.flush() 是我所需要的。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2021-07-26
      • 2022-01-10
      相关资源
      最近更新 更多