write read print open create python file io readfile

read - Leer dos archivos de texto línea por línea simultáneamente-python



python write text file (3)

Tengo 2 archivos de texto en dos idiomas diferentes y están alineados línea por línea. Es decir, la primera línea en el archivo de texto1 debe ser igual a la primera línea en el archivo de texto2, y así sucesivamente.

¿Hay alguna manera de leer ambos archivos línea por línea simultáneamente?

A continuación hay una muestra de cómo deberían verse los archivos, imagine que el número de líneas por archivo es de alrededor de 1,000,000.

archivo de texto1:

This is a the first line in English This is a the 2nd line in English This is a the third line in English

archivo de texto2:

C''est la première ligne en Français C''est la deuxième ligne en Français C''est la troisième ligne en Français

salida deseada

This is a the first line in English/tC''est la première ligne en Français This is a the 2nd line in English/tC''est la deuxième ligne en Français This is a the third line in English/tC''est la troisième ligne en Français

Hay una versión java de esta lectura de dos archivos de texto línea por línea simultáneamente -java , pero python no usa buffer que lee línea por línea. Entonces, ¿cómo se haría?


Python te permite leer línea por línea, e incluso es el comportamiento predeterminado: simplemente iteras sobre el archivo como si fuera iterar sobre una lista.

wrt / iterando sobre dos iterables a la vez, itertools.izip es tu amigo:

from itertools import izip fileA = open("/path/to/file1") fileB = open("/path/to/file2") for lineA, lineB in izip(fileA, fileB): print "%s/t%s" % (lineA.rstrip(), lineB.rstrip())


from itertools import izip with open("textfile1") as textfile1, open("textfile2") as textfile2: for x, y in izip(textfile1, textfile2): x = x.strip() y = y.strip() print("{0}/t{1}".format(x, y))

En Python 3, reemplace itertools.izip con el zip incorporado.


with open(file1) as f1, open(fil2) as f2: for x, y in zip(f1, f2): print("{0}/t{1}".format(x.strip(), y.strip()))

salida:

This is a the first line in English C''est la première ligne en Français This is a the 2nd line in English C''est la deuxième ligne en Français This is a the third line in English C''est la troisième ligne en Français