valor una sustituir replicas reemplazar recorrer modificar matriz listas lista iterar for elementos elemento con cambiar array python iterator

python - una - ¿Cómo iterar a través de líneas en dos archivos simultáneamente?



reemplazar un valor en un array python (3)

Tengo dos archivos y quiero realizar alguna operación de línea en ambos. (En otras palabras, las primeras líneas de cada archivo corresponden, al igual que la segunda, etc.) Ahora, puedo pensar en una serie de formas ligeramente incómodas de iterar en ambos archivos simultáneamente; sin embargo , esto es Python, así que me imagino que hay una abreviatura sintáctica.

En otras palabras, ¿hay alguna forma sencilla de adaptar el

for line in file:

¿De modo que extrae datos de ambos archivos simultáneamente?


Python 2:

Usa itertools.izip para unir los dos iteradores.

from itertools import izip for line_from_file_1, line_from_file_2 in izip(open(file_1), open(file_2)):

Si los archivos tienen una longitud desigual, use izip_longest .

En Python 3, usa zip y zip_longest en zip_longest lugar. Además, use un with para abrir archivos, para que el cierre se maneje automáticamente incluso en caso de errores.

with open(file1name) as file1, open(file2name) as file2: for line1, line2 in zip(file1, file2): #do stuff


Tu podrías intentar

for line1, line2 in zip(file1, file2): #do stuff

Sin embargo, con cuidado, este bucle se cerrará cuando finalice el archivo más corto.

Cuando se usa Python 2, itertools.izip es mejor para este tipo de cosas porque no crea una list .


Un ejemplo completo para la posteridad:

from itertools import izip, izip_longest file1name = ''/some/path/and/file'' file2name = ''/another/path/and/another/file'' with open(file1name) as file1, open(file2name) as file2: for line1, line2 in izip(file1, file2): # or izip_longest # do something with the lines

El uso with asegura que los archivos se limpien después de su uso, incluso si ocurre una excepción.