Ficheros

En construcciónEsta leccion está en elaboración

Python puede leer y escribir ficheros de texto o binarios.

Trabajar con ficheros: with ... as ...

Las palabras reservadas with y as se introdujeron en Python 2.6 (aunque estaban disponibles en Python 2.5 en el módulo __future__) para facilitar, entre otros, la forma de trabajar con ficheros .

Su sintaxis general es la siguiente:

with EXPRESION as VARIABLE:
    BLOQUE DE INSTRUCCIONES

En el caso de los ficheros, la expresión es una llamada a la función open() y la variable es la conexión con el fichero:

with open("FICHERO") as fichero:
    BLOQUE DE INSTRUCCIONES

La función open puede tener varios argumentos. Los más importantes son

with open("FICHERO", mode="MODO", encoding="CODIFICACION") as fichero:
    BLOQUE DE INSTRUCCIONES

En estos apuntes se trabaja únicamente con ficheros de texto y se utiliza siempre el juego de caracteres UTF-8.


Si el sistema operativo utiliza de forma predeterminada el juego de caracteres UTF-8, no haría falta indicar el juego de caracteres al abrir el fichero. Para saber cuál es el juego de caracteres predeterminado se puede ejecutar en IDLE las instrucciones siguientes:

>>> import locale
>>> print(locale.getpreferredencoding(False))
cp1512

De todas formas, aunque el juego de caracteres sea UTF-8, se recomienda indicar siempre explícitamente el juego de caracteres al abrir un fichero, ya que los programas escritos en un sistema operativo se pueden acabar ejecutando en otro.

Modos de escritura

Los modos de escritura son:

En cualquier caso, para escribir en el fichero hay que añadir en la función print() el argumento file=fichero, donde fichero es la variable utilizada en la expresión with ... as ...

Los tres ejemplos siguientes muestran la diferencia entre cada uno de los modos de escritura:

Lectura

Los modos de lectura son:

Abrir automáticamente en el navegador

Si el fichero que se ha creado con Python es un página web, puede ser de utilidad que el fichero se abra automáticamente en el navegador para ver el resultado inmediatamente.

Para ello se puede utilizar la función open() del módulo webbrowser de la biblioteca estándar, que abre el fichero indicado con la aplicación asociada en el sistema operativo.

import webbrowser

ruta = "prueba.html"

with open(ruta, mode="w", encoding="utf-8") as fichero:
    print("<!DOCTYPE html>", file=fichero)
    print("<html lang=\"es\">", file=fichero)
    print("<head>", file=fichero)
    print("  <meta charset=\"utf-8\" />", file=fichero)
    print("  <title>HTML 5</title>", file=fichero)
    print("  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />", file=fichero)
    print("</head>", file=fichero)
    print("", file=fichero)
    print("<body>", file=fichero)
    print("  <p>Esta página es HTML 5 válido.</p>", file=fichero)
    print("</body>", file=fichero)
    print("</html>", file=fichero)

    webbrowser.open(ruta)

Para saber más