我正在写一个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...
但我希望它打印此行,下次重新打印/刷新它,因此它只会显示一次,并且我会看到下载进度。
怎么做到呢?
这是Python 3.x的代码:
print(os.path.getsize(file_name)/1024+'KB / '+size+' KB downloaded!', end='\r')
该end=关键字是什么做的工作在这里- 在默认情况下,print()在一个换行符(结束\n)字符,但可以使用不同的字符串替换。在这种情况下,用回车符结束该行,而是将光标返回到当前行的开头。因此,无需sys为此类简单用法导入模块。print()实际上有许多关键字参数可以用来大大简化代码。
end=
print()
\n
sys
要在Python 2.6+上使用相同的代码,请将以下行放在文件顶部:
from __future__ import print_function