Cómo escribir en un fichero en Python

Cómo escribir en un fichero en Python

Sí, antes o después cualquier programador se tiene que enfrentar a la tarea de escribir en un fichero. Y en Python, como en cualquier otro lenguaje, esto es posible. Por eso, este tutorial sobre cómo escribir en un fichero no podía faltar en la sección «Desayuno con Python».

El objeto File y sus tipos

El objeto File en Python representa un fichero del sistema operativo. Los ficheros, sirven para guardar datos en disco que podrán ser leídos posteriormente (recuerda que ya vimos cómo leer ficheros en Python).

Normalmente, existen dos tipos de ficheros: ficheros de texto y ficheros binarios. Un fichero de texto contiene caracteres que son legibles por el ser humano y están guardados con una codificación (ASCII, UTF-8, …). Por el contrario, un fichero binario está compuesto por un flujo de bytes y solo tienen sentido para los programas o aplicaciones para los que son creados. Un ejemplo de este tipo de archivos son las imágenes o la música.

Cuando se trabaja con un fichero de texto, hay que tener en cuenta que este se estructura como una secuencia de líneas. Cada una de estas líneas acaba con un carácter especial conocido como EOL (fin de línea). En función del sistema operativo, este carácter puede variar. Puede ser \n (Unix) o \r\n (Windows). No obstante, en Python, cuando escribimos o leemos el carácter \n en un fichero de texto, el propio lenguaje se encarga de convertir dicho carácter al correspondiente por el sistema operativo, por lo que es algo a prever si nuestro código se va a ejecutar en diferentes sistemas.

La función open() y sus modos

En Python, para escribir en un fichero o simplemente leer su contenido utilizaremos la función predefinida open(). Al invocar a esta, se crea un objeto de tipo File.

Lo más común es llamar a la función open() con dos parámetros:

  • El primero de ellos es la ruta del fichero (en la que está o donde se va a crear).
  • El segundo es el modo en el que se abre el fichero: lectura, escritura, …

Por defecto, cuando se invoca a la función open(path, modo), el fichero se abre en modo texto. Si quisiéramos abrir un fichero en forma binaria, habría que añadir el carácter b al parámetro modo.

Los diferentes modos en los que se puede abrir un fichero son:

rSolo lectura. El fichero solo se puede leer. Es el modo por defecto si no se indica.
wSolo escritura. En el fichero solo se puede escribir. Si ya existe el fichero, machaca su contenido.
aAdición. En el fichero solo se puede escribir. Si ya existe el fichero, todo lo que se escriba se añadirá al final del mismo.
xComo ‘w’ pero si existe el fichero lanza una excepción.
r+Lectura y escritura. El fichero se puede leer y escribir.

Como te he indicado, todos estos modos abren el fichero en modo texto. Su versión correspondiente para abrir el fichero en modo binario sería rb, wb, ab, xb, rb+.

Chuleta para escribir en un fichero

Bueno, ahora que ya conocemos los principales conceptos del objeto File y cómo trata Python a los ficheros, es hora de ver cómo escribir en un fichero en Python.

La estructura para abrir un fichero en modo escritura es la siguiente:

f = open('mi_fichero', 'w')
try:
    # Procesamiento para escribir en el fichero
finally:
    f.close()

Aunque personalmente prefiero usar la sentencia with, ya que ella se encarga de cerrar el fichero y liberar sus recursos (incluso si ocurre cualquier error):

with open('mi_fichero', 'w') as f:
    # Procesamiento del fichero

El objeto f de  los ejemplos anteriores representa un fichero y este pone a nuestra disposición el método write() para escribir cualquier contenido sobre el fichero.

Escribir un fichero de texto

Con todo lo anterior, si quisiéramos escribir un fichero de texto haríamos lo siguiente:

with open('mi_fichero', 'w') as f:
    f.write('Hola mundo\n')

Escribir un fichero binario

Para escribir un fichero binario, simplemente añadimos el carácter b al parámetro modo y escribimos bytes:

with open('mi_fichero', 'wb') as f:
    f.write(b'0x28')

Conclusión

Bueno, este post es muy importante tenerlo en cuenta para cualquier pythonista. En él hemos repasado el objeto File de Python, los distintos tipos de ficheros que existen y cómo escribir en un fichero. Espero que te haya gustado.

Si tienes cualquier pregunta, no dudes en ponerte en contacto conmigo 😊

¿Quieres ser expert@ en Python? Recibe trucos Python y las últimas novedades del blog

¡Eyyy! Esto también te puede interesar 👇

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo profile

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

¿Quieres ser expert@ en Python? 🐍

❤️ He ayudado a miles de programadores/as como tú a ser mejores Pythonistas

📩 Recibe de vez en cuando trucos y scripts Python y las últimas novedades del blog

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

¿Quieres ser expert@ en PYTHON?

j2logo-pythonistas

❤️ He ayudado a miles de programadores/as como tú

📩 Recibe trucos, scripts y las novedades del blog

¿Quieres dominar Python?

Python, Guía para ser un Pythonista

El curso con el que aprender el lenguaje desde cero. Con mi soporte y ayuda.

OFERTA BLACK FRIDAY

35% de descuento