2016-01-27 2 views
1

J'ai un très gros fichier texte (de plusieurs Go de taille) que j'ai besoin de lire en Python et de le traiter ligne par ligne.Obtenir des progrès dans la lecture de gros fichiers texte

Une approche serait d'appeler simplement data=f.readlines(), puis de traiter le contenu. Avec cette approche, je connais le nombre total de lignes et je peux facilement mesurer la progression de mon traitement. Cependant, ce n'est probablement pas l'approche idéale compte tenu de la taille du fichier.

L'alternative (et je pense mieux) option serait de dire:

for line in f: 
     do something 

En ce moment, je ne suis pas sûr de savoir comment mesurer mes progrès plus. Y at-il une bonne option qui n'ajoute pas de gros frais généraux? (Une des raisons pour lesquelles je souhaite connaître les progrès est que l'on peut avoir un indicateur approximatif du temps restant, car toutes les lignes de mon fichier ont des tailles similaires et pour vérifier si mon script est toujours en train de faire quelque chose.

+0

Il n'y a pas de meilleure façon que vous le suggérez. Voir ici: http://stackoverflow.com/questions/845058/how-to-get-line-count-cheaply-in-python – Serbitar

Répondre

0

si vous utilisez Linux OS il y a un moyen de sortir, il semble.

a = os.popen("wc -l some.txt") 
f = a.read() 

A la lecture que vous obtenez le nombre de lignes ainsi que le nom du fichier

+0

getsize renvoie les octets pas les numéros de ligne – Serbitar

+0

oui Serbitar comme vous l'avez dit, il ne retournait que des octets. Erreur!!! .. Si l'os utilisé est linux alors .. la réponse éditée ci-dessus pourrait fonctionner. –