web-dev-qa-db-fra.com

python énumérer la barre tqdm lors de la lecture d'un fichier?

Je ne vois pas la barre de progression tqdm lorsque j'utilise ce code pour itérer mon fichier ouvert:

        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)

quelle est la bonne façon d'utiliser tqdm ici?

7
Wei Wu

Vous êtes sur la bonne voie. Vous utilisez tqdm correctement, mais arrêtez d'imprimer chaque ligne à l'intérieur de la boucle lorsque vous utilisez tqdm. Vous voudrez également utiliser tqdm sur votre première boucle for et pas sur les autres, comme ceci:

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)

Quelques notes sur l'utilisation de énumèrent et son utilisation dans tqdm ici .

14

J'ai également rencontré cela - tqdm n'affiche pas de barre de progression, car le nombre de lignes dans l'objet fichier n'a pas été fourni.

La boucle for itérera sur les lignes, lisant jusqu'à ce que le prochain caractère de nouvelle ligne soit rencontré.

Pour ajouter la barre de progression à tqdm, vous devrez d'abord analyser le fichier et compter le nombre de lignes, puis le passer à tqdm comme 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)
4
user1446308