【问题标题】:python 2.7 | carriage return not working [duplicate]蟒蛇2.7 |回车不起作用[重复]
【发布时间】:2017-08-17 20:43:22
【问题描述】:

我正在尝试使用\r 打印到 bash(Ubuntu 16.04 终端)中的同一行,但它不起作用,因为程序仍然在新行中打印帧号。

这里是代码

i = 0
while img is not None:
    print "Frame Number: {0}  \r".format(i)
    result = unwarp(img, xmap, ymap)
    result.save(disp)
    # Save to file
    fname = "../temp_data/frames/FY{num:06d}.png".format(num=i)
    result.save(fname)        
    img = vc.getImage()
    i = i + 1

我什至尝试过像这样使用\x08

print "Frame Number: {0}  \xO8".format(i)

但它仍然无法正常工作。

这是一个示例输出:

Frame Number: 0  
Frame Number: 1  
Frame Number: 2  
Frame Number: 3  
Frame Number: 4  
Frame Number: 5  
Frame Number: 6  
Frame Number: 7  
Frame Number: 8

【问题讨论】:

  • @TankorSmash 哎呀,我的意思是“顺便输出”,但我打错了。我会改正的

标签: python bash python-2.7 carriage-return


【解决方案1】:

试试这样:

print "\rFrame Number: {:06d}".format(i),

注意 print 语句中的结尾 , 字符。

【讨论】:

  • 哇这工作。你能解释一下它是如何工作的吗?
  • 这只是 Python 2 的语法,它不会在 print 语句上自动附加换行符。很奇怪,我知道...它已在 Python 3 中修复。
  • 非常感谢。我注意到这条线不会自发刷新。这个 bash 相关吗?
  • 那是关于输出缓冲的——通常标准输出是行缓冲的。如果在 print 语句之后添加对 sys.stdout.flush() 的调用,您应该会看到每一行
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多