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

3

当涉及到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个回答

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)

那将会在每次输出时换行。

\r 在这里变得多余了,mipadi。它只是用来回到行的开头。 - paxdiablo

3
我想您可能只需要更改以下内容:

我认为您可能只需要更改:

skip_eol=True

to:

skip_eol=False

删除"\r",看看会发生什么。我想你会感到惊喜的 :-)


0
"

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

在 Python (2.x) shell 中尝试:

"
print "00000000\r1111"

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


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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接