Programación con Python: Ficheros

Trabajar con ficheros es esencial para leer y escribir datos en el sistema de archivos de nuestro ordenador. A continuación mostraremos la sintaxis básica para utilizar ficheros en Python, incluyendo cómo abrir, leer y escribir en ellos. Utilizaremos explicaciones acompañadas de ejercicios prácticos.

Abrir y cerrar ficheros

Para trabajar con un archivo en Python, primero debemos abrirlo. Podemos usar la función open() para abrir un archivo en diferentes modos, como lectura ('r') o escritura ('w') y también para añadir ('a'). Después de terminar de trabajar con el fichero, debemos cerrarlo utilizando el método close() para liberar recursos y también para evitar la pérdida de datos:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Abrir un archivo en modo de lectura
archivo = open("archivo.txt", "r")
# Trabajar con el archivo (leer o escribir)
# Cerrar el archivo después de terminar
archivo.close()
# Abrir un archivo en modo de lectura archivo = open("archivo.txt", "r") # Trabajar con el archivo (leer o escribir) # Cerrar el archivo después de terminar archivo.close()
# Abrir un archivo en modo de lectura
archivo = open("archivo.txt", "r")

# Trabajar con el archivo (leer o escribir)

# Cerrar el archivo después de terminar
archivo.close()

Leer contenido de un fichero

Para leer el contenido de un archivo, podemos usar los métodos read(), readline() o readlines():

  • read(). Lee todo el contenido del archivo como una cadena de texto:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
archivo = open("archivo.txt", "r")
contenido = archivo.read()
print(contenido)
archivo.close()
archivo = open("archivo.txt", "r") contenido = archivo.read() print(contenido) archivo.close()
archivo = open("archivo.txt", "r")
contenido = archivo.read()
print(contenido)
archivo.close()
  • readline(). Lee una línea del archivo:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
archivo = open("archivo.txt", "r")
linea = archivo.readline()
print(linea)
archivo.close()
archivo = open("archivo.txt", "r") linea = archivo.readline() print(linea) archivo.close()
archivo = open("archivo.txt", "r")
linea = archivo.readline()
print(linea)
archivo.close()
  • readlines(). Lee todas las líneas del archivo y las devuelve como una lista:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
archivo = open("archivo.txt", "r")
lineas = archivo.readlines()
print(lineas)
archivo.close()
archivo = open("archivo.txt", "r") lineas = archivo.readlines() print(lineas) archivo.close()
archivo = open("archivo.txt", "r")
lineas = archivo.readlines()
print(lineas)
archivo.close()

Escribir en un archivo

Para escribir en un archivo, debemos abrirlo en modo de escritura, con 'w' o para añadir, con 'a', según lo que necesitemos en cada momento:

  • Modo escritura ('w'). Sobrescribe el contenido del archivo existente o crea un nuevo archivo si no existe:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
archivo = open("archivo.txt", "w")
archivo.write("Este es un nuevo contenido.\n")
archivo.write("¡Hola, Mundo!\n")
archivo.close()
archivo = open("archivo.txt", "w") archivo.write("Este es un nuevo contenido.\n") archivo.write("¡Hola, Mundo!\n") archivo.close()
archivo = open("archivo.txt", "w")
archivo.write("Este es un nuevo contenido.\n")
archivo.write("¡Hola, Mundo!\n")
archivo.close()
  • Modo añadir ('a'). Agrega contenido al final del archivo existente o crea un nuevo archivo si no existe:
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
archivo = open("archivo.txt", "a")
archivo.write("Este es un contenido adicional.\n")
archivo.write("¡Hola de nuevo!\n")
archivo.close()
archivo = open("archivo.txt", "a") archivo.write("Este es un contenido adicional.\n") archivo.write("¡Hola de nuevo!\n") archivo.close()
archivo = open("archivo.txt", "a")
archivo.write("Este es un contenido adicional.\n")
archivo.write("¡Hola de nuevo!\n")
archivo.close()

Gestores de contexto

El uso de un gestor de contexto con la declaración with es una forma más segura y eficiente de trabajar con ficheros. Utilizando esta funcionalidad, el archivo se cierra automáticamente cuando el bloque with termina, incluso si se produce una excepción:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Leer contenido del archivo con un Context Manager
with open("archivo.txt", "r") as archivo:
contenido = archivo.read()
print(contenido)
# Escribir en el archivo con un Context Manager
with open("archivo.txt", "a") as archivo:
archivo.write("Esto es un nuevo contenido con Context Manager.\n")
# Leer contenido del archivo con un Context Manager with open("archivo.txt", "r") as archivo: contenido = archivo.read() print(contenido) # Escribir en el archivo con un Context Manager with open("archivo.txt", "a") as archivo: archivo.write("Esto es un nuevo contenido con Context Manager.\n")
# Leer contenido del archivo con un Context Manager
with open("archivo.txt", "r") as archivo:
    contenido = archivo.read()
    print(contenido)

# Escribir en el archivo con un Context Manager
with open("archivo.txt", "a") as archivo:
    archivo.write("Esto es un nuevo contenido con Context Manager.\n")

Verificar si un archivo existe

Podemos usar el módulo os para verificar si un archivo existe antes de abrirlo.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import os
nombre_archivo = "archivo.txt"
if os.path.exists(nombre_archivo):
with open(nombre_archivo, "r") as archivo:
contenido = archivo.read()
print(contenido)
else:
print(f"El archivo '{nombre_archivo}' no existe.")
import os nombre_archivo = "archivo.txt" if os.path.exists(nombre_archivo): with open(nombre_archivo, "r") as archivo: contenido = archivo.read() print(contenido) else: print(f"El archivo '{nombre_archivo}' no existe.")
import os

nombre_archivo = "archivo.txt"

if os.path.exists(nombre_archivo):
    with open(nombre_archivo, "r") as archivo:
        contenido = archivo.read()
        print(contenido)
else:
    print(f"El archivo '{nombre_archivo}' no existe.")

Test

Evalúa tus conocimientos mediante este test que incluye preguntas relacionadas con esta unidad.