Python 读取文件时 enumerate() tqdm 进度条?
Python enumerate() tqdm progress-bar when reading a file?
当我使用此代码迭代打开的文件时,我看不到 tqdm 进度条:
with open(file_path, 'r') as f:
for i, line in enumerate(tqdm(f)):
if i >= start and i <= end:
print("line #: %s" % i)
for i in tqdm(range(0, line_size, batch_size)):
# pause if find a file naed pause at the currend dir
re_batch = {}
for j in range(batch_size):
re_batch[j] = re.search(line, last_span)
这里使用 tqdm 的正确方法是什么?
您走在正确的轨道上。您正确使用了 tqdm,但在使用 tqdm 时没有打印循环内的每一行。您还需要在第一个 for 循环而不是其他循环上使用 tqdm,如下所示:
with open(file_path, 'r') as f:
for i, line in enumerate(tqdm(f)):
if i >= start and i <= end:
for i in range(0, line_size, batch_size):
# pause if find a file naed pause at the currend dir
re_batch = {}
for j in range(batch_size):
re_batch[j] = re.search(line, last_span)
关于使用 enumerate 及其在 tqdm here 中的用法的一些注意事项。
我 运行 也加入了这个 - tqdm 没有显示进度条,因为文件对象中的行数没有提供。
for
循环将遍历行,读取直到遇到下一个换行符。
为了将进度条添加到tqdm
,你首先需要扫描文件并计算行数,然后将其作为total
from tqdm import tqdm
num_lines = sum(1 for line in open('myfile.txt','r'))
with open('myfile.txt','r') as f:
for line in tqdm(f, total=num_lines):
print(line)
我正在尝试对包含所有维基百科文章的文件执行相同的操作。所以我不想在开始处理之前计算总行数。而且它是一个 bz2 压缩文件,所以解压缩行的 len 高估了在该迭代中读取的字节数,所以...
with tqdm(total=Path(filepath).stat().st_size) as pbar:
with bz2.open(filepath) as fin:
for line in fin:
pbar.update(fin.tell() - pbar.n)
# used this to figure out the attributes of the pbar instance
# print(vars(pbar))
感谢 Yohan Kuanke 删除的答案。如果版主取消删除它,你可以抄我的。
在使用readlines()
读取文件的情况下,可以使用:
from tqdm import tqdm
with open(filename) as f:
sentences = tqdm(f.readlines(),unit='MB')
unit='MB'
可以相应地更改为'B'或'KB'或'GB'。
当我使用此代码迭代打开的文件时,我看不到 tqdm 进度条:
with open(file_path, 'r') as f:
for i, line in enumerate(tqdm(f)):
if i >= start and i <= end:
print("line #: %s" % i)
for i in tqdm(range(0, line_size, batch_size)):
# pause if find a file naed pause at the currend dir
re_batch = {}
for j in range(batch_size):
re_batch[j] = re.search(line, last_span)
这里使用 tqdm 的正确方法是什么?
您走在正确的轨道上。您正确使用了 tqdm,但在使用 tqdm 时没有打印循环内的每一行。您还需要在第一个 for 循环而不是其他循环上使用 tqdm,如下所示:
with open(file_path, 'r') as f:
for i, line in enumerate(tqdm(f)):
if i >= start and i <= end:
for i in range(0, line_size, batch_size):
# pause if find a file naed pause at the currend dir
re_batch = {}
for j in range(batch_size):
re_batch[j] = re.search(line, last_span)
关于使用 enumerate 及其在 tqdm here 中的用法的一些注意事项。
我 运行 也加入了这个 - tqdm 没有显示进度条,因为文件对象中的行数没有提供。
for
循环将遍历行,读取直到遇到下一个换行符。
为了将进度条添加到tqdm
,你首先需要扫描文件并计算行数,然后将其作为total
from tqdm import tqdm
num_lines = sum(1 for line in open('myfile.txt','r'))
with open('myfile.txt','r') as f:
for line in tqdm(f, total=num_lines):
print(line)
我正在尝试对包含所有维基百科文章的文件执行相同的操作。所以我不想在开始处理之前计算总行数。而且它是一个 bz2 压缩文件,所以解压缩行的 len 高估了在该迭代中读取的字节数,所以...
with tqdm(total=Path(filepath).stat().st_size) as pbar:
with bz2.open(filepath) as fin:
for line in fin:
pbar.update(fin.tell() - pbar.n)
# used this to figure out the attributes of the pbar instance
# print(vars(pbar))
感谢 Yohan Kuanke 删除的答案。如果版主取消删除它,你可以抄我的。
在使用readlines()
读取文件的情况下,可以使用:
from tqdm import tqdm
with open(filename) as f:
sentences = tqdm(f.readlines(),unit='MB')
unit='MB'
可以相应地更改为'B'或'KB'或'GB'。