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

Python脚本:每次打印新行到shell,而不是更新现有行,python,shell,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 最后一行不断更新新的进度值。我想改变这个。我希望每次都打印

说到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)
如果需要更多的代码,请让我知道,这样我可以告诉你需要什么来解决这个问题


非常感谢您的帮助。

如果我正确理解您的请求,您应该能够将该功能更改为:

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)

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

我想您可能只需要更改:

skip_eol=True
致:


然后去掉“
\r
”看看会发生什么。我想您会感到惊喜:-)

您可以取出\r,将光标移回行的开头,然后取出skip\u eol=True。也许:

   self.to_stdout(u'[download] %s of %s at %s ETA %s' %
        (percent_str, data_len_str, speed_str, eta_str))
“更新”效果是通过“\r”实现的

在Python(2.x)shell中尝试以下操作:


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

然后,该行将变得多余,mipadi。它只用于返回到线路的起点。
   self.to_stdout(u'[download] %s of %s at %s ETA %s' %
        (percent_str, data_len_str, speed_str, eta_str))
print "00000000\r1111"