Hamburger Icon
Interactuar con ficheros de texto usando Python

Interactuar con ficheros de texto usando Python

Hay ocasiones en las que necesitamos interactuar con ficheros de texto durante la ejecución de nuestros programas. Con Python es muy fácil hacerlo, tal y como veremos a continuación. No necesitamos importar ninguna librería, Python ya dispone por defecto de funciones que nos permiten crear, modificar y eliminar ficheros de texto.

Modos de acceso a los ficheros

Antes de empezar, describamos las opciones disponibles que podremos usar al abrir ficheros:

  • r: Abre un fichero para lectura.

  • x: Crea un nuevo fichero. Si ya existe da error.

  • w: Abre un fichero para escritura. Si el fichero no existe, lo crea. Si por el contrario ya existe, se elimina el contenido y se trata como un fichero recién creado.

  • a: Abre un fichero para escritura, manteniendo siempre el contenido que haya. Si el fichero no existe, lo crea.

  • +: Abre un fichero para lectura y escritura.

Crear un fichero

Para crear un fichero usaremos la función open:

# creamos un nuevo fichero en modo lectura/escritura
my_new_file = open("myfile.txt", "w+")

# insertamos el contenido en el fichero
my_new_file.write("Aquí escribiremos varias líneas\n")

for i in range(3):
    line = "{} línea de prueba\n".format(i+1)
    my_new_file.write(line)

# cerramos el fichero que estamos editando
my_new_file.close()

El resultado sería la creación del fichero myfile.txt con este contenido:

Aquí escribiremos varias líneas
1 línea de prueba
2 línea de prueba
3 línea de prueba

Modificación de ficheros

Para modificar ficheros usaremos el parámetro a ya que mantendrá el contenido que haya y añadirá lo que indiquemos debajo.

append_to_file = open("myfile.txt", "a+")
# añadimos algunas líneas
for i in range(3):
    line = "¡{} línea añadida!\n".format(i+1)
    append_to_file.write(line)
append_to_file.close()

El contenido del fichero generado ahora sería:

Aquí escribiremos varias líneas
1 línea de prueba
2 línea de prueba
3 línea de prueba
¡1 línea añadida!
¡2 línea añadida!
¡3 línea añadida!

Lectura de un archivo

Para la lectura usaremos la opción r:

reading_file = open("myfile.txt", "r")
content = reading_file.read()
print(content)
reading_file.close()

y por consola se imprimiría esto:

Aquí escribiremos varias líneas
1 línea de prueba
2 línea de prueba
3 línea de prueba
¡1 línea añadida!
¡2 línea añadida!
¡3 línea añadida!

Si queremos leer línea por línea y tener un mayor control, podemos hacer esto:

read_line_per_line = open("myfile.txt", "r")
lines = read_line_per_line.readlines()
for i, line in enumerate(lines):
    content = "Línea {0}: {1}".format(i, line)
    print(content)
read_line_per_line.close()

Y lo que veríamos por pantalla sería esto:

Línea 0: Aquí escribiremos varias líneas
Línea 1: 1 línea de prueba
Línea 2: 2 línea de prueba
Línea 3: 3 línea de prueba
Línea 4: ¡1 línea añadida!
Línea 5: ¡2 línea añadida!
Línea 6: ¡3 línea añadida!

¿Y para qué sirve todo esto?

Aunque estos ejemplos sean muy chorra, estas funciones nos pueden ser útiles en varios casos. Algunos casos serían:

  • Tenemos un script en Python y debemos generar un fichero guardando el resultado de ciertas operaciones para revisarlo posteriormente

  • Nos dan un log con 40.000 líneas y nos dicen que analicemos las que sean de error. Podríamos generar un script iterando línea a línea y filtrando por las que contengan "ERROR" o cualquier cadena identificativa.

  • Nos dan un fichero de exportación de productos que tenemos que importar en otro entorno pero primero debemos adaptarlo un poco.

Las posibilidades son infinitas y Python siempre está ahí cuando se le necesita.