Python: agregar contenido a un archivo

En este artículo, examinaremos cómo agregar contenido a un archivo existente usando Python. Digamos que tenemos un archivo llamado helloworld.txt que contiene el texto &quot...

En este artículo, examinaremos cómo agregar contenido a un archivo existente usando Python.

Digamos que tenemos un archivo llamado helloworld.txt que contiene el texto "¡Hola mundo!" y se encuentra en nuestro directorio de trabajo actual en un sistema de archivos Unix:

1
2
$ cat ./helloworld.txt
Hello world!

Ahora supongamos que queremos agregar el texto adicional "¡Es bueno haber nacido!" al final de este archivo desde un programa de Python.

El primer paso es obtener una referencia al archivo desde nuestro programa. Esto se puede hacer con el método open integrado, utilizando la ruta/nombre del archivo como primer argumento y el modo como segundo argumento, de la siguiente manera:

1
f = open("./helloworld.txt", "a")

La variable f ahora contiene una referencia a un objeto de archivo que podemos usar para escribir hasta el final del archivo. Si el archivo aún no existía, se creará. Tenga en cuenta que el segundo argumento "a" especificó el modo con el que abrir el archivo, en este caso el modo "Agregar". Esto establece la posición de escritura al final del archivo.

Si hubiéramos usado "w" (modo de escritura), cualquier cosa que escribamos en el archivo comenzará desde el principio y sobrescribirá el contenido existente.

Ahora podemos escribir contenido en el archivo de esta manera:

1
2
3
f.write("\nIt's good to have been born!")

f.close()

Recuerde llamar al método close después de escribir en los archivos para que no permanezca bloqueado después de que el programa salga y para asegurarse de que cualquier contenido almacenado en el búfer en la memoria se escriba en el archivo.

Así es como se ve el archivo después de agregarlo:

1
2
3
$ cat ./helloworld.txt
Hello world!
It's good to have been born!

Una nota final es que si agregamos un "+" al argumento de modo del método open, podemos abrir el archivo para agregar * y * leer. Esto habilitará tanto la lectura como la escritura en el archivo. Sin "+" ocurrirá una excepción IOError si intentamos leer del archivo. De manera predeterminada, tanto la lectura como la escritura ocurrirán al final del archivo, pero esto se puede cambiar en cualquier momento usando el método seek.

Estos son los comandos para lograr esto (tenga en cuenta que usamos el método flush para asegurarnos de que el nuevo contenido se escribe en el archivo antes de intentar leerlo):

1
2
3
4
5
6
7
f = open("./helloworld.txt", "a+")
f.write("I am grateful.")
f.flush() 
f.seek(0)
content = f.read()
print content
f.close()

Y así es como se ve el archivo final:

1
2
3
4
$ cat ./helloworld.txt
Hello world!
It's good to have been born!
I am grateful.

Sobre el autor

Este artículo fue escrito por Jacob Stopak, un consultor y desarrollador de software apasionado por ayudar a otros a mejorar sus vidas a través del código. Jacob es el creador de Compromiso inicial, un sitio dedicado a ayudar a los desarrolladores curiosos a aprender cómo se codifican sus programas favoritos. Su proyecto destacado ayuda a las personas aprender git a nivel de código.

Licensed under CC BY-NC-SA 4.0