Solución:
Estás en el camino correcto. Está utilizando tqdm correctamente, pero no imprima cada línea dentro del bucle cuando utilice tqdm. También querrá usar tqdm en su primer bucle for y no en otros, así:
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)
Algunas notas sobre el uso enumerar y su uso en tqdm aquí.
Me encontré con esto también – tqdm no muestra una barra de progreso porque no se ha proporcionado el número de líneas en el objeto de archivo.
los for
El bucle iterará sobre las líneas, leyendo hasta que se encuentre el siguiente carácter de nueva línea.
Para agregar la barra de progreso a tqdm
, primero deberá escanear el archivo y contar el número de líneas, luego pasarlo a tqdm como el 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)
Estoy intentando hacer lo mismo en un archivo que contiene todos los artículos de Wikipedia. Entonces no quiero contar las líneas totales antes de comenzar a procesar. También es un archivo comprimido bz2, por lo que la longitud de la línea descomprimida sobreestima el número de bytes leídos en esa iteración, así que …
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))
Gracias Yohan Kuanke por su respuesta eliminada. Si los moderadores lo recuperan, puede crib el mío.