"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je accéder efficacement à une ligne spécifique dans un gros fichier texte ?

Comment puis-je accéder efficacement à une ligne spécifique dans un gros fichier texte ?

Publié le 2024-11-06
Parcourir:192

How can I efficiently jump to a specific line in a large text file?

Optimiser les sauts de ligne dans les fichiers texte volumineux : une approche alternative

Lors du traitement de fichiers texte volumineux comportant des lignes de longueurs variables, il est souvent inefficace de lire séquentiellement chaque ligne pour atteindre un numéro de ligne spécifique. L'exemple de code fourni dans la question illustre cette approche, nécessitant une itération potentiellement lente dans l'ensemble du fichier. Cependant, il existe une méthode alternative qui optimise le saut de ligne en exploitant une liste de décalages calculée.

Saut de ligne basé sur le décalage

Pour surmonter ce défi, une approche plus efficace implique de lire le fichier une fois pour créer une liste de décalages de lignes. Chaque décalage marque la position de départ d'une ligne particulière. En stockant ces décalages, vous pouvez accéder directement à une ligne souhaitée sans traiter les précédentes.

Voici un extrait de code amélioré :

# Read the file and build the line offset list
line_offset = []
offset = 0
with open(filename, "rb", 0) as file:
    for line in file:
        line_offset.append(offset)
        offset  = len(line)

# Jump to a specific line (line 141978 in this example)
file.seek(line_offset[141977])  # Adjust the index as lines are zero-indexed

# Process the target line as desired
DoSomethingWithThisLine(line)

En utilisant la liste de décalage de ligne, vous pouvez passer directement à la ligne cible, réduisant considérablement le temps de traitement et améliorant l'efficacité.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3