输出到同一行覆盖以前的输出?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...但我希望它打印这一行,然后下次重新打印/刷新它只会显示一次,我将看到该下载的进度...怎么做到呢?
3 回答

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
这是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
添加回答
举报
0/150
提交
取消