有一个很好的方法来做到以下几点?
我写了一个简单的控制台应用程序,使用ftplib从FTP服务器上传和下载文件.
每次下载一些数据块时,我都想更新文本进度条,即使它只是一个数字.
但我不想删除所有打印到控制台的文本.(执行"清除"然后打印更新的百分比.)
我正在写一个简单的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)
但我希望它打印这一行,然后下次重新打印/刷新它所以它只显示一次,我将看到该下载的进度...
怎么做到呢?
我想在python shell中编写简单的数字时钟.我想尽可能避免使用tkinter.这就是我现在拥有的;
import time
while True:
from datetime import datetime
now = datetime.now()
print ("%s/%s/%s %s:%s:%s" % (now.month,now.day,now.year,now.hour,now.minute,now.second))
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
这会产生反复出现的打印,就像这样;
06/29/16 23:08:32
06/29/16 23:08:33
06/29/16 23:08:34
Run Code Online (Sandbox Code Playgroud)
我知道这很粗糙,我还在学习.我只想要在shell中使用"滴答"数字时钟的一行.我在空闲和Windows 10上使用python 3.5.1.
如果这是不可能的,我非常想知道原因.
非常感谢
我只想在屏幕上显示一项,我想这应该用 print(...,lush=True) 来完成,但它不能按我的预期工作。
for i in range(0,100):
print(i, end='', flush=True)
Run Code Online (Sandbox Code Playgroud)
现在我得到这样的数字012345678....,我想在屏幕上看到的只是一个数字,而没有看到以前的打印结果,因此在第一次迭代时,它只显示0第二个显示1,我认为齐平可以解决问题,但事实并非如此,我在哪里我错了?
python ×4
clock ×1
console ×1
digital ×1
flush ×1
progress ×1
progress-bar ×1
python-3.8 ×1
python-3.x ×1
refresh ×1
shell ×1
updating ×1