J'ai deux grands fichiers texte (~ 100 Go) qui doivent être itérés simultanément. Zip fonctionne bien pour les fichiers plus petits, mais j'ai découvert qu'il fait en fait une liste de lignes à partir de mes deux fichiers. Cela signifie que chaque ligne est stockée en mémoire. Je n'ai pas besoin de faire quoi que ce soit avec les lignes plus d'une fois.zip() alternative pour itération à travers deux iterables
handle1 = open('filea', 'r'); handle2 = open('fileb', 'r')
for i, j in zip(handle1, handle2):
do something with i and j.
write to an output file.
no need to do anything with i and j after this.
est-il une alternative à zip() qui agit comme un générateur qui me permettra de itérer ces deux fichiers sans utiliser> 200 Go de RAM?
... en fait, je connais d'une certaine façon mais cela ne semble pas très pythonique - while line1: line1 = handle1.readline(); line2 = handle2.readline(); faire quelque chose avec line1 et line2 ... –
En parlant d'environnements contraints en mémoire, vous pourriez trouver cela intéressant http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –