Maison  >  Article  >  développement back-end  >  Comment passer efficacement à une ligne spécifique dans un fichier texte volumineux ?

Comment passer efficacement à une ligne spécifique dans un fichier texte volumineux ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-02 03:39:30126parcourir

How to Efficiently Skip to a Specific Line in a Large Text File?

Saut d'une ligne spécifique dans un fichier texte volumineux

Lorsque vous traitez des fichiers texte volumineux, il est courant de rencontrer le besoin de sauter directement à une ligne particulière. Une approche simple consiste à lire le fichier de manière itérative, mais cela peut s'avérer inefficace si vous connaissez le numéro de ligne cible à l'avance.

Le problème :

Utilisation de l'extrait de code fourni :

startFromLine = 141978
urlsfile = open(filename, "rb", 0)
linesCounter = 1
for line in urlsfile:
    if linesCounter > startFromLine:
        DoSomethingWithThisLine(line)
    linesCounter += 1

Ce code lit le fichier ligne par ligne, nécessitant le traitement de toutes les lignes précédentes, même si elles ne sont pas pertinentes.

Une solution plus efficace :

Pour accéder efficacement à une ligne spécifique, vous pouvez utiliser une approche en deux étapes :

  1. Créer une liste de compensations :

    • Lisez le fichier ligne par ligne, en créant une liste line_offset qui stocke le décalage de chaque début de ligne.
  2. Rechercher la ligne cible :

    • Étant donné le numéro de ligne cible n, utilisez file.seek(line_offset[n]) pour déplacer le pointeur de fichier au début de cette ligne.

Voici un exemple :

line_offset = []
offset = 0
for line in file:
    line_offset.append(offset)
    offset += len(line)
file.seek(0)

target_line = 141978
file.seek(line_offset[target_line])

Cette approche vous permet de passer directement à la ligne souhaitée, évitant ainsi la surcharge inutile liée au traitement des lignes non pertinentes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn