基本上我想做与这个家伙做的相反的事情......呵呵.
我有一个程序告诉我它有多远.
for i in some_list:
#do a bunch of stuff.
print i/len(some_list)*100," percent complete"
Run Code Online (Sandbox Code Playgroud)
因此,如果len(some_list)为50,我会将最后一行打印50次.我想打印一行并不断更新该行.我知道我知道这可能是你整天都会读到的最蹩脚的问题.我只是无法弄清楚我需要在谷歌中找到答案的四个字.
更新!我试过mvds的建议哪个看起来没错.新代码
print percent_complete," \r",
Run Code Online (Sandbox Code Playgroud)
完成百分比只是一个字符串(我现在第一次抽象,我试图成为文字).现在的结果是它运行程序,直到程序结束后才打印ANYTHING,然后在一行且只有一行打印"100%完成".
如果没有回车(但是使用逗号,mvds的一半建议),它将一直打印到最后.然后打印:
0 percent complete 2 percent complete 3 percent complete 4 percent complete
Run Code Online (Sandbox Code Playgroud)
等等.所以现在新的问题是用逗号它不会打印直到程序完成.
使用回车并且没有逗号,它的行为与两者都不完全相同.
mvd*_*vds 76
它被称为回车,或 \r
使用
print i/len(some_list)*100," percent complete \r",
Run Code Online (Sandbox Code Playgroud)
逗号可防止print添加换行符.(并且空格将保持线路与先前输出清晰)
另外,不要忘记以print ""a结束至少获得最终的换行符!
Rem*_*emi 27
从python 3.x你可以做到:
print('bla bla', end='')
Run Code Online (Sandbox Code Playgroud)
(通过放在from __future__ import print_function脚本/模块的顶部,也可以在Python 2.6或2.7中使用)
Python控制台进度条示例:
import time
# status generator
def range_with_status(total):
""" iterate from 0 to total and show progress in console """
n=0
while n<total:
done = '#'*(n+1)
todo = '-'*(total-n-1)
s = '<{0}>'.format(done+todo)
if not todo:
s+='\n'
if n>0:
s = '\r'+s
print(s, end='')
yield n
n+=1
# example for use of status generator
for i in range_with_status(10):
time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)
dlc*_*ers 23
对我来说,有效的是Remi和siriusd的答案的组合:
from __future__ import print_function
import sys
print(str, end='\r')
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
小智 12
对于您可能需要的控制台
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
强制更新.我认为,在print中使用会阻止stdout冲洗,不知何故它不会更新
没有人提到在Python 3.3+中您不需要sys.stdout.flush()。print('foobar', end='', flush=True)作品。
游戏迟到了 - 但是由于没有一个答案对我有用(我没有全部尝试)并且我在搜索中不止一次遇到这个答案......在python 3中,这个解决方案非常优雅我相信这正是作者正在寻找的,它更新了同一行上的单个语句。请注意,如果行缩小而不是增长,您可能需要做一些特殊的事情(例如可能使字符串固定长度并在末尾填充空格)
if __name__ == '__main__':
for i in range(100):
print("", end=f"\rPercentComplete: {i} %")
time.sleep(0.2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89386 次 |
| 最近记录: |