J'essaie de lire certains fichiers dans un répertoire contenant 10 fichiers texte. Avec le temps, le nombre de fichiers augmente, et la taille totale à partir de maintenant tourne autour de 400 Mo.Lecture d'un gros fichier avec Python
contenu du fichier est au format:
student_name:student_ID:date_of_join:anotherfield1:anotherfield2
Dans le cas d'un match, je dois imprimer toute la ligne. Voici ce que j'ai essayé.
findvalue = "student_id" #this is users input alphanumeric
directory = "./RecordFolder"
for filename in os.listdir(directory):
with open(os.path.join(directory, filename)) as f:
for line in f:
if findvalue in line:
print line
Cela fonctionne, mais cela prend beaucoup de temps. Comment puis-je réduire le temps d'exécution?
Si vous ne lisez que séquentiellement, vous pouvez utiliser [fichiers mappés en mémoire] (http://en.wikipedia.org/wiki/Memory-mapped_file). –
Définir beaucoup de temps :) Dans mon cas, un exemple similaire prend environ 0,392s sur un fichier de 120M. Donc, devrait prendre environ 1.2s sur un fichier de 400M. La seule différence entre votre code et le mien est que j'ouvre explicitement le fichier en mode 'r'ead-only'. – favoretti
Non, cela prend environ 5 min:/pour moi – Whiskey