python:使用回车和逗号不能正常工作

kev*_*818 20 python newline carriage-return

我需要在循环中打印一行(Python 3.x).我已经在SO上查看,我将这一行放在我的代码中:

print('{0} imported\r'.format(tot),)
Run Code Online (Sandbox Code Playgroud)

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

sys.stdout.write('{0} imported\r'.format(tot))
Run Code Online (Sandbox Code Playgroud)

但是这不会给控制台打印任何东西 ......

有谁知道这是怎么回事?

sen*_*rle 26

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

sys.stdout.write('{0} imported\r'.format(tot))
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

正如Levon提醒我的那样,所有系统都不需要冲洗生产线 - 但使用\r这种方式通常是一个好主意.


小智 19

如果要覆盖最后一行,则需要添加\ r \n(字符返回)和结束="",这样就不会转到下一行.

values = range(0, 100)
for i in values:
    print ("\rComplete: ", i, "%", end="")
print ("\rComplete: 100%")
Run Code Online (Sandbox Code Playgroud)


Sou*_*nal 6

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

values = range(0, 101)
for i in values:
  print ("Complete: ", i, "%", end="\r")
print ()
Run Code Online (Sandbox Code Playgroud)

  • 你的最后一行是矫枉过正.它应该只是`print()`. (4认同)