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.