Python脚本:每次打印新行到shell而不是更新现有行

时间:2009-02-09 19:00:14

标签: python shell

对于python,我是一个菜鸟。我有一个python脚本,它给我这样的输出:

[last] ZVZX-W3vo9I: Downloading video webpage
[last] ZVZX-W3vo9I: Extracting video information
[download] Destination: myvideo.flv
[download]   9.9% of 10.09M at    3.30M/s ETA 00:02

最后一行不断更新新的进度值。我想改变这个。而不是更新我希望每次都打印一个新行。我怎样才能做到这一点?我认为有关的部分是这一点:

def report_progress(self, percent_str, data_len_str, speed_str, eta_str):
    """Report download progress."""
    self.to_stdout(u'\r[download] %s of %s at %s ETA %s' %
        (percent_str, data_len_str, speed_str, eta_str), skip_eol=True)

如果需要查看更多代码,请告诉我们,以便我向您展示解决此问题所需的代码。

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

如果我理解您的请求,您应该可以将此功能更改为:

def report_progress(self, percent_str, data_len_str, speed_str, eta_str):
    """Report download progress."""
    print u'[download] %s of %s at %s ETA %s' % (percent_str, data_len_str, speed_str, eta_str)

每次都会在新行上打印输出。

答案 1 :(得分:3)

我想你可能只需要改变:

skip_eol=True

为:

skip_eol=False

并摆脱“\r”以查看会发生什么。我想你会感到惊喜: - )

答案 2 :(得分:0)

你可以取出\ r,它会移动到光标的第一行,并可能取出skip_eol = True。也许:

   self.to_stdout(u'[download] %s of %s at %s ETA %s' %
        (percent_str, data_len_str, speed_str, eta_str))

答案 3 :(得分:0)

“更新”效果由'\ r'实现。

在Python(2.x)shell中试试这个:

print "00000000\r1111"

\ r \ n只需将光标返回到行的开头。