📁 Archivos en Python – Métodos objeto file + EJEMPLOS

En esta entrada me gustaría que comencemos a aprender archivos en Python. Vamos a ver cómo crear y editar archivos desde nuestro código de manera segura, usando también try/except para manejar errores como se debe. ¡Venga, manos a la obra!

📓 Abre tu cuaderno de Jupyter Notebook que creaste en la lección anterior (8-Excepciones en Python) y vamos a crear un nuevo cuaderno para esta lección. Llámalo 9-Archivos en Python.

 

📚 Recursos externos para profundizar: Consulta la documentación oficial sobre lectura y escritura de archivos en Python y la documentación de la función open().

 

Archivos en Python 3: Crear, leer, abrir y ejecutar

Icono de archivos en python

Para crear un archivo en Python desde nuestro código encontrarás diferentes maneras, pero yo recomiendo utilizar la que aquí voy a explicar debido a que es más segura y óptima a la hora de modificar ficheros.

📝 Crear archivos en Python usando With

La cláusula with establece automáticamente un contexto para la ejecución segura debido a que crea un punto de partida de configuraciones iniciales y al finalizar recupera los valores anteriores. Y en el caso de la apertura de un archivo, este automáticamente lo cierra una vez terminada la función que lo involucre, así como también se realiza una limpieza de la memoria utilizada.

Por esto creo que la forma correcta de manipular archivos es utilizando la cláusula with, aunque veo muchos tutoriales y cursos donde se enseña a abrir y crear ficheros solo utilizando el método open (lo que no está mal pero tampoco es lo más óptimo).

De esta manera se utiliza un gestor de contexto «Context Manager», que son objetos que tienen definidos los métodos __enter__ y __exit__ para inicializar el contexto y para terminarlo, al igual que los objetos file, esto nos asegura que se cierre correctamente.

➡️ Abrir archivos en Python mediante el objeto file

Podemos manipular una variable como un objeto file (archivo) asignándole un archivo mediante la función integrada open e indicando la ruta del mismo seguido del modo en el cual vamos a abrirlo. Entonces la variable toma como valor el archivo y se convierte en un objeto file, permitiéndonos trabajar con ella utilizando los métodos.

Combinándolo con la cláusula with as lo hacemos de la siguiente manera:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - Abrir archivos
#  
#  Copyright 2018 https://pythones.net

# Forma clásica de crear un archivo:
f = open("archivotext.txt", "w")  # Creamos el archivo
f.write("Creando archivo de texto en python de forma clásica")  # Escribimos en el
f.close()  # Cerramos el archivo

# Utilizando With As - Nuestra forma de hacerlo
with open("archivotext.txt", "w") as f:  # Creamos el archivo
    f.write("Creando archivo de texto en python usando with as")  # Escribimos en el

Te recomiendo acostumbrarte a hacerlo utilizando la cláusula with as. Aunque su sintaxis es un poco más difícil de recordar, a mi forma de verla es mucho más segura y estable. Veamos y repasemos la sintaxis:

with open("Nombre", "modo de apertura") as objeto:
    objeto.write()  # Método escribir del objeto

# Recordar que las líneas debajo de with as deben ir identadas

Si ya has comprendido la sintaxis, ponla en práctica. Intenta crear un archivo «.py» que sea capaz de crear un «.txt».

 


⚙️ Métodos del objeto file en Python

Anteriormente habíamos visto que los métodos se podrían traducir como órdenes que le podemos dar a los objetos. Hace poco había visto un ejemplo en un sitio que decía que un objeto podría ser nuestro perro y un método las órdenes que le dictamos, las cuales le hemos enseñado con anterioridad (sentarse, rodar, dar la pata).

Un método puede ser una serie de sentencias para llevar a cabo una acción, pero en este caso podemos ver al método como el pedido a un objeto para que realice una tarea o un cambio.

Comprender los métodos del objeto file nos van a permitir manipular archivos en Python (crearlos, abrirlos, guardarlos o solo leerlos).

Es importante saber que cuando lo abrimos existe un puntero, que es donde se posiciona el intérprete sobre el archivo. Normalmente lo hace al inicio, pero si quisiéramos abrirlo con el puntero en determinada ubicación podríamos hacerlo con los métodos de los que dispone el objeto file.

Método Seek (byte)

Este método se corresponde al puntero que te mencionaba y junto al método tell() nos permitirá ubicarnos al final o al principio de los archivos. Pero el método seek() fue diseñado para archivos binarios, no para archivos de texto.

Este método moverá el puntero hacia el byte indicado como argumento.

seek(desplazamiento, desde_donde)

Si colocamos un cero ‘0’ como argumento a seek nos posiciona al inicio del archivo.

Método Tell()

El método tell() devuelve el puntero a una posición en un momento dado. Junto con seek() nos permitirán posicionarnos al principio o al final.

tell() nos devuelve un entero que indica la posición del puntero.

Método Read([bytes])

El método read() nos permite leer un archivo completo, salvo que indiquemos los bytes, entonces solo leerá hasta los bytes determinados. Vamos a ver cómo utilizarlo abriendo un archivo .txt:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - Método Read
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "r") as f:  # Abrimos de modo Read (r)
    contenido = f.read()  # Lo abrimos utilizando el metodo read y lo almacenamos en la variable

print(contenido)  # Imprimimos la variable que tiene el contenido
Resultado:
(Contenido del archivo pirata.txt)

Presta atención a la letra «r» que colocamos como modo luego del nombre. Esto significa que lo abre solo para ser leído. Por ende no puede ser editado.

Y cuidado con esto porque si colocas una «w» de «Write» lo abrirás en modo escribir, y se borrará todo el contenido. Esto lo veremos más abajo en los Modos de apertura.

Método Readline([bytes])

El método readline() lee una línea por vez. Si colocamos un solo readline() nos leerá una sola línea y si no especificamos a partir de donde, será la primera por defecto. Veamos el código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - Método Readlines
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "r") as f:  # Abrimos el archivo de modo read (r)
    linea1 = f.readline()  # Almacenamos en variable linea1 el método readline()
    linea2 = f.readline()  # Volvemos a almacenar en variable linea2 el método readline()
    print(linea1)
    print(linea2)
Resultado:
(Primera línea del archivo)
(Segunda línea del archivo)

Cada vez que hagamos un readline() tomará la siguiente línea.

Imprimir o leer solo líneas específicas de un archivo en Python

En caso de querer imprimir una línea específica no podemos hacerlo con readline() correctamente. Aun posicionando el puntero con el método seek() porque el mismo fue creado con la idea de posicionar en archivos binarios, y en cambio los de texto se manejan línea a línea, por lo que sería un lio calcular dónde específicamente establecer el puntero si no es al principio o al final.

Suponiendo que quisiéramos imprimir a partir de la línea 34 a la 38 inclusive, deberíamos hacerlo iterando el archivo de texto con la función enumerate e imprimir solo las líneas que nos interesan. Dejo el código por si te resulta útil:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - Método Readlines
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "r") as f:
    estribillo = (linea for i, linea in enumerate(f) if 34 <= i <= 38)
    for linea in estribillo:
        print(linea)

Método Readlines()

Lee todas las líneas en forma de lista, separando las líneas con el carácter de escape para los saltos de línea «\n».

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - Método Readlines
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "r") as f:
    contenido = f.readlines()  # Lo abrimos utilizando el método readlines y lo almacenamos en la variable
    print(contenido)
Resultado:
['Línea 1\n', 'Línea 2\n', 'Línea 3\n', ...]

Método Write()

Sirve para escribir una cadena dentro del archivo. Para esto debemos abrirlo con modo de re-escribir, lo cual se hace agregando «r+» en el modo de apertura. De esta manera nuestra cadena se añadirá al final.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - método Write
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "r+") as f:  # Abrimos a modo Reescribir (r+)
    contenido = f.read()  # Lo abrimos utilizando read
    f.write("Tierra santa - Canción del pirata")  # Escribimos la nueva línea

Si no utilizas el f.read() la línea se añadirá al principio y no al final. También para agregarla al final puedes abrirlo como apertura «a» en vez de «r+» y sin incluir el .read(). Así:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "a") as f:  # Abrimos usando el modo (a)
    f.write("Tierra santa - Canción del pirata")  # Escribimos la nueva línea

Método Writelines(secuencia)

Nos permite escribir una secuencia (elemento iterable) dentro del archivo línea a línea, por ejemplo: una lista.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file - método writelines
#  
#  Copyright 2018 https://pythones.net

Lista = ["Cancion\n", "sobre\n", "piratas\n"]

with open("pirata.txt", "r+") as f:  # Lo abrimos como Reescribir (r+)
    contenido = f.read()  # Lo abrimos utilizando read
    f.writelines(Lista)  # Escribimos la Lista en el archivo linea a linea

Sin incluir el código opcional de mostrar las líneas editadas:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  Archivos en Python 3 - file
#  
#  Copyright 2018 https://pythones.net

Lista = ["Cancion\n", "sobre\n", "piratas\n"]

with open("pirata.txt", "r+") as f:  # Abrimos usando Reescribir (r+)
    contenido = f.read()  # Lo abrimos utilizando read
    f.writelines(Lista)  # Escribimos la Lista en el archivo linea a linea

Método Close()

El método close() se encarga de cerrar el archivo de forma segura. Si pretendes modificar archivos en Python luego de utilizar el método close() se producirá un error, debido a que ya se cerró. Deberás abrirlo nuevamente.

 

 


✅ Modos de apertura de archivos en Python

El modo de apertura de nuestros archivos es importante debido a que determinan varios factores a tener en cuenta y permiten abrir archivos tanto para solo lectura como para edición o reemplazo completo. Veamos cuáles son y cuál es su sintaxis a la hora de especificarlo.

📊 Modos de apertura de archivos en Python
Modo Descripción Comportamiento
"r" Solo lectura Abre el archivo para leer. Error si no existe.
"w" Escritura (trunca) Crea el archivo o sobrescribe todo su contenido.
"a" Añadir al final Abre el archivo para escribir al final. Crea si no existe.
"r+" Lectura y escritura Abre el archivo para leer y escribir. Error si no existe.
"w+" Lectura y escritura (trunca) Crea el archivo o sobrescribe todo su contenido. Permite lectura.
"a+" Lectura y añadir Abre para lectura y escritura al final. Crea si no existe.

Recuerda que tanto «w» como «w+» van a truncar los archivos en caso de existir, por lo que si abres un file existente, el mismo será sobrescrito y perderás su contenido.

 


🧑‍💻 Crear un programa para leer archivos desde Python

1️⃣ Utilizamos Try / Except para atrapar excepciones al abrirlo

Creando un programa en python para leer archivos

Podemos agregar una sentencia try / except para en caso de generarse un error a la hora de abrir un archivo, por ejemplo en el caso que nos hayamos equivocado de ubicación. Veamos cómo aplicarlo en este caso de querer abrir un archivo para leerlo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  sin título.py
#  
#  Copyright 2018 https://pythones.net

with open("pirata.txt", "r+") as f:
    contenido = f.read()

En este caso he eliminado el archivo de texto pirata.txt y por ende nos produce este error (obviamente porque lo estamos intentando abrir en modo «r+»; si lo intentáramos colocando el modo write («w+») el archivo se crearía y no nos daría ningún error):

Error al abrir archivo:
Traceback (most recent call last):
  File "archivo.py", line 8, in <module>
    with open("pirata.txt", "r+") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'pirata.txt'

Como podemos interpretar en el error, nos está diciendo que el archivo no existe. Así que podemos hacer dos cosas: crear un try / except donde se le advierta al usuario, y también podemos pedirle al usuario que ingrese la ubicación donde debería estar el archivo.

2️⃣ Le preguntamos al usuario dónde se encuentra

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  sin título.py
#  
#  Copyright 2018 https://pythones.net

while True:  # Creamos un bucle infinito
    try:  # Intentamos abrirlo
        with open("pirata.txt", "r+") as f:  # Abrimos el fichero a modo de Reescribir (r+)
            contenido = f.read()  # Lo abrimos utilizando el método read
            print(contenido)
            break  # Rompemos el bucle
    except:
        print("Error al intentar abrir")
        break  # Rompemos el bucle

Hasta aquí creamos un bucle infinito utilizando while True y además añadimos un try/except en caso de que ocurra un error.

3️⃣ Forzamos a dar la ubicación en un input

Ahora vamos a colocar una variable como nombre de archivo, a la cual llamaremos dirarchivo y seguidamente vamos a colocar en el except un input para que el usuario se vea forzado a dar la ubicación de dicho archivo, quedando nuestro código así:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  sin título.py
#  
#  Copyright 2018 https://pythones.net

dirarchivo = "piratas.txt"

while True:  # Creamos un bucle infinito
    try:  # Intentamos abrirlo
        with open(dirarchivo, "r+") as f:  # Abrimos utilizando Reescribir (r+)
            contenido = f.read()  # Lo abrimos utilizando el método read
            print(contenido)
            break
    except:
        print("Error al intentar abrir")
        print(f"No se encuentra el archivo {dirarchivo}. Especifique su ubicación:")
        dirarchivo = input("Dirección: ")

Espero que te haya encantado como a mí lo bien que funciona.

A tener en cuenta a la hora de utilizar archivos en Python

Aprender a trabajar correctamente los archivos nos abre muchas posibilidades, no solo el hecho de crear un texto. A mi forma de verlo, podemos manipular archivos del sistema y programas modificando configuraciones. También podemos crear un código que nos cree y edite otros «.py». O nos permite reescribir archivos masivamente. Suponiendo que tengas muchos archivos y quieras agregarles algún copyright o marca personal. Puede permitirte también crear un txt lleno de contraseñas, emails, información útil. ¡Que tu imaginación no te detenga solo en los cutres .txt!

Esto es todo mi querido lector. Me despido cordialmente esperando que te haya gustado esta entrada y por sobre todo te haya ayudado a comprender este maravilloso lenguaje. Un cordial abrazo y nos vemos en la siguiente entrada. ¡Gracias por visitar mi blog!

📅 Última actualización: julio 28, 2026

¡Compartir es una forma de agradecer! :)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio