用ProgressBar代替B显示值

2024-05-06 09:33:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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')

通常,我会用^{{cd2>}替换^{{cd1>}将光标带回行的开始。但这不是一个选项,因为行的开始被"Loading Data... "偏移。有人告诉我可以使用progressbar2来实现这一点,但我似乎不知道如何让它编写实际值,而不是一个进度条。你知道吗

如果能帮上忙,我将不胜感激


Tags: 文件csvanswer程序true内容datainfile
1条回答
网友
1楼 · 发布于 2024-05-06 09:33:40

使用自定义小部件:

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)

相关问题 更多 >