我的python程序的一部分是将(csv)文件的内容加载到列表中。由于此文件很大,我想添加一些有关它的进度数据。这就是我现在正在做的事情:
def loadFile(infilepath):
answer = []
with open(infilepath) as infile:
for progress,row in enumerate(csv.reader(infile), 1):
if not progress%10000:
progress = format(progress, ',')
print(progress, '\b'*len(progress), sep='', end='', flush=True)
answer.append(doStuffWith(row))
return answer
print("Loading Data... ", end='', flush=True)
data = loadData('path/to/file')
通常情况下,我会将print(progress, '\b'*len(progress), ...)
替换为print(progress, '\r', ...)
,将光标移回到行首。但这不是一个选项,因为行的起点被"Loading Data... "
所抵消。有人告诉我,我可以使用progressbar2,但我似乎无法弄清楚如何编写实际值,而不是进度条。
我很感激这方面的帮助
答案 0 :(得分:1)
使用自定义小部件:
import time
from progressbar import ProgressBar, FormatLabel, UnknownLength
def transform(n):
return format(n, ',')
widget = FormatLabel('Loading Data... %(value)s')
widget.mapping = {**widget.mapping, 'value': ('value', transform)}
with ProgressBar(widgets=[widget], max_value=UnknownLength) as bar:
for i in range(1, 1234):
time.sleep(0.001)
bar.update(i)