我正在写一个简单的ftp下载器.代码的一部分是这样的:
ftp.retrbinary("RETR " + file_name, process)
Run Code Online (Sandbox Code Playgroud)
我正在调用函数进程来处理回调:
def process(data):
print os.path.getsize(file_name)/1024, 'KB / ', size, 'KB downloaded!'
file.write(data)
Run Code Online (Sandbox Code Playgroud)
和输出是这样的:
1784 KB / KB 1829 downloaded!
1788 KB / KB 1829 downloaded!
etc...
Run Code Online (Sandbox Code Playgroud)
但我希望它打印这一行,然后下次重新打印/刷新它所以它只显示一次,我将看到该下载的进度...
怎么做到呢?
我正在运行Ubuntu 10.04 LTS,Python 2.6.5(r265:79063,2010年4月16日,13:09:56)
>>> m = 'Šiven'
>>> m
'\xa6iven'
>>> unicode(m)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa6 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
我应该如何正确设置它(编码,解码),以便它准确地写出它读取的内容?