47 votes

Comment lire le fichier N lignes à la fois en Python ?

J'ai besoin de lire un gros fichier en lisant au plus N lignes à la fois, jusqu'à EOF. Quelle est la manière la plus efficace de le faire en Python ? Quelque chose comme:

 with open(filename, 'r') as infile:
    while not EOF:
        lines = [get next N lines]
        process(lines)

16voto

Anatolij Points 424

Ce code fonctionnera avec n'importe quel nombre de lignes dans le fichier et n'importe quel N . Si vous avez 1100 lines dans le fichier et N = 200 , vous obtiendrez 5 fois pour traiter des morceaux de 200 lignes et une fois avec 100 lignes.

 with open(filename, 'r') as infile:
    lines = []
    for line in infile:
        lines.append(line)
        if len(lines) >= N:
            process(lines)
            lines = []
    if len(lines) > 0:
        process(lines)

2voto

yurib Points 2907

peut être:

 for x in range(N):
  lines.append(f.readline())

2voto

Konstant Points 1481

Je pense que vous devriez utiliser des morceaux au lieu de spécifier le nombre de lignes à lire. Cela rend votre code plus robuste et générique. Même si les lignes sont grandes, l'utilisation de chunk ne téléchargera que la quantité de données attribuée en mémoire.

Référez-vous à ce lien

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X