我编写了一个处理文件的Python命令行脚本。
我希望有一个进度条显示已完成的工作量,但我还希望在屏幕上看到一些额外的输出。
我发现this script对进度条有很大帮助,但我没有找到如何添加额外输出。
我想要的是输出,例如:
[====== ] 30%
Error: File 'test.png' could not be processed.
Error: File 'yet_another_test.jpg' could not be processed.
在处理过程中更新进度条...
提前致谢!
答案 0 :(得分:1)
我不知道这是不是你想要的。希望它有所帮助。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import time
import math
# Output example: [======= ] 75%
# width defines bar width
# percent defines current percentage
def progress(width, percent):
marks = math.floor(width * (percent / 100.0))
spaces = math.floor(width - marks)
loader = '[' + ('=' * int(marks)) + (' ' * int(spaces)) + ']'
sys.stdout.write("%s %d%%\r" % (loader, percent))
if percent >= 100:
sys.stdout.write("\n")
sys.stdout.flush()
def func():
try:
# you can do your things here
assert 0, 'hahahah'
except Exception as e:
sys.stdout.write(repr(e)+'\r')
sys.stdout.flush()
# Simulate doing something...
for i in xrange(100):
progress(50, (i + 1)) # +1 because xrange is only 99
if i == 6:
func()
time.sleep(0.1) # Slow it down for demo
答案 1 :(得分:0)
你想要什么,无法完美实现,因为当你将某些内容打印到新行时,'\r'
将不会将光标返回到上一行。然而,你可以在进度条结束时输出你想要的任何其他信息,尽管它确实看起来很奇怪!