输出到同一行覆盖以前的输出?python(2.5)

输出到同一行覆盖以前的输出?python(2.5)

我正在写一个简单的ftp下载器。代码的一部分是这样的:

ftp.retrbinary("RETR " + file_name, process)

我正在调用函数进程来处理回调:

def process(data):
    print os.path.getsize(file_name)/1024, 'KB / ', size, 'KB downloaded!'
    file.write(data)

和输出是这样的:

1784  KB / KB 1829 downloaded!1788  KB / KB 1829 downloaded!etc...

我希望它打印这一行,然后下次重新打印/刷新它只会显示一次,我将看到该下载的进度...

怎么做到呢?


幕布斯7119047
浏览 2381回答 3
3回答

拉莫斯之舞

这是Python 3.x的代码:print(os.path.getsize(file_name)/1024+'KB / '+size+' KB downloaded!', end='\r')该end=关键字是什么做的工作在这里-在默认情况下,print()在一个换行符(结束\n)字符,但可以使用不同的字符串替换。在这种情况下,使用回车符结束该行会将光标返回到当前行的开头。因此,无需sys为此类简单用法导入模块。print()实际上有许多关键字参数可用于大大简化代码。要在Python 2.6+上使用相同的代码,请将以下行放在文件的顶部:from __future__ import print_function
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python