Concatenar archivos de texto
Arnau Sanchez
pyarnau en gmail.com
Mar Jul 1 19:23:20 CEST 2008
Pepe Aracil escribió:
> Así a grandes rasgos:
>
> fa=file("ficheroA","r")
> fb=file("ficheroB","r")
> fc=file("ficheroC","w")
>
> fc.write(fa.read())
> fc.frite(fb.read())
Sí, pero no será eficiente para ficheros muy grandes, ya que tendrá que
cargarlos enteros en memoria.
Lo que propone Chema (iterar sobre líneas) es lo más simple. Si uno se empeña en
hacerlo un poco más eficiente, se podrían leer los ficheros de entrada por
bloques en vez de por líneas. Se me ocurre:
def iterfd(fd, buffersize=1024):
while 1:
data = fd.read(buffersize)
if not data:
break
yield data
filenames = ["/etc/hosts", "/etc/environment"]
outfilename = "/tmp/out"
open(outfilename, "w").writelines(data for filename in filenames
for data in iterfd(open(filename)))
La función "iterfd" se puede reescribir de forma muy compacta usando "iter" y el
argumento centinela, pero el código no es tan claro:
def iterfd(fd, buffersize=1024):
return iter(lambda: fd.read(buffersize), "")
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es