117 votes

Comment passer à une ligne particulière dans un énorme fichier texte ?

Existe-t-il des alternatives au code ci-dessous :

startFromLine = 141978 # or whatever line I need to jump to

urlsfile = open(filename, "rb", 0)

linesCounter = 1

for line in urlsfile:
    if linesCounter > startFromLine:
        DoSomethingWithThisLine(line)

    linesCounter += 1

Si je traite un énorme fichier texte (~15MB) avec des lignes de longueur inconnue mais différente, et avoir besoin de sauter à une ligne particulière dont je connais le numéro à l'avance ? Je me sens mal de les traiter une par une alors que je sais que je peux ignorer au moins la première moitié du fichier. Je cherche une solution plus élégante, s'il en existe une.

0 votes

Comment sais-tu que la première moitié du fichier n'est pas un tas de " \n "s" alors que la seconde moitié est une seule ligne ? Pourquoi vous sentez-vous mal à ce sujet ?

9 votes

Je pense que le titre est trompeur - en effet, 15 Mo n'est pas vraiment un "énorme fichier texte", c'est le moins qu'on puisse dire...

-1voto

ksed Points 50

Peut utiliser cette fonction pour retourner la ligne n :

def skipton(infile, n):
    with open(infile,'r') as fi:
        for i in range(n-1):
            fi.next()
        return fi.next()

0 votes

Cette logique ne fonctionne pas s'il y a des lignes vides continues, fi.next() saute toutes les lignes vides en même temps, sinon c'est bon :)

0 votes

L'OP ne mentionne pas que les lignes ont des coupures de lignes non standard. Dans ce cas, il faudrait analyser chaque ligne avec au moins une instruction if pour les sauts de ligne partiels.

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