Implementación de Operaciones de Ficheros en Python con Módulos OS y Shutil

Enviado por Anónimo y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,85 KB

Operaciones Esenciales de Ficheros en Python

17) Detección de Archivos y Rutas

Para interactuar con el sistema de archivos, primero importamos el módulo os:

import os

Queremos verificar si un archivo específico existe. Supongamos que existe un archivo llamado "test.csv" con la ruta: /home/panghys/Escritorio/python real/test.csv.

Colocamos su ruta en una variable:

path = '/home/panghys/Escritorio/python real/test.csv' # string

if os.path.exists(path): # Verifica si 'path' es una ubicación real (archivo o directorio)
    print(f"La ruta {path} existe.")
    
    if os.path.isfile(path): # Si existe, verificamos si es un archivo
        print("Es un archivo.")
    elif os.path.isdir(path): # Si no es un archivo, puede ser una carpeta (directorio)
        print("Es un directorio.")
else:
    print(f"La ruta {path} no existe.")

18) Lectura de Archivos

Una vez que el archivo existe, podemos acceder a su contenido. Es una buena práctica manejar este tipo de operaciones con bloques try...except para evitar interrupciones fuertes (errores de ejecución).

try:
    with open('test.csv', 'r') as file: # Abre el archivo en modo lectura ('r' es el modo por defecto)
        print(file.read()) # Imprime su contenido de texto
        
    # Es importante notar que el bloque 'with open(...)' cierra automáticamente el archivo 
    # luego de leerlo. Si se desea verificar el estado actual del archivo fuera del bloque, 
    # se puede usar file.closed (devuelve True o False).
    
except FileNotFoundError:
    print('El archivo no fue encontrado.')

19) Escritura de Archivos

Podemos modificar o añadir contenido a un archivo utilizando diferentes modos de apertura:

Modo 'w' (Write - Sobreescritura)

Este modo sobrescribe completamente el contenido existente del archivo.

texto = 'Quiero añadir este texto\nY este abajo del otro' # \n es salto de línea (newline)

with open('test.csv', 'w') as file:
    file.write(texto)

Modo 'a' (Append - Adición)

Para simplemente seguir agregando contenido al final del archivo sin borrar lo anterior, se utiliza el parámetro 'a':

texto_adicional = '\nLe pongo el salto de línea antes \nY este abajo del anterior'

with open('test.csv', 'a') as file:
    file.write(texto_adicional)

20) Copiar Archivos

Para operaciones de copia, utilizamos el módulo shutil:

import shutil
  • shutil.copyfile('archivo_origen', 'copia_destino'): Crea una copia del archivo. Si se desea que se cree en una ruta específica, se coloca la ruta deseada en el destino. Importante: copyfile debe recibir otro archivo como destino, no un directorio.
  • shutil.copy('archivo_origen', 'archivo_destino'): Crea una copia. Solo copia el contenido, pero no los metadatos (fecha, origen, permisos, etc.). Este sí puede crear una copia dada una ruta específica sin necesidad de especificar el nombre del archivo de destino si la ruta es un directorio.
  • shutil.copy2('archivo_origen', 'archivo_destino'): Crea una copia casi exacta, compartiendo metadatos (es la opción preferida para copias completas).

21) Mover Archivos

Para mover archivos, volvemos a usar el módulo os:

import os

origen = 'ruta_de_origen' # Ruta completa del archivo (debe incluir el nombre del archivo)
destino = 'ruta_del_destino' # Ruta completa del destino (debe incluir el nombre del archivo)

try:
    if os.path.exists(destino):
        print('Ya hay un archivo con ese nombre en el lugar de destino.')
    else:
        os.replace(origen, destino) # Mueve o renombra el archivo del origen al destino
        print(f'El archivo {origen} fue movido exitosamente a {destino}!')
except FileNotFoundError:
    print(f'No se encontró la ruta de origen: {origen}')

22) Eliminación de Archivos y Directorios

Utilizamos el módulo os para la eliminación básica:

import os

try:
    os.remove('ruta_del_archivo_incluyendolo') # Elimina un archivo
except FileNotFoundError:
    print(f"El archivo no se encontró en la ruta especificada.")
  • os.rmdir(path): Se utiliza para eliminar una carpeta, pero solo si esta se encuentra vacía.
  • Si se desea eliminar una carpeta con contenido (recursivamente), se recurre al módulo shutil:
    import shutil
    shutil.rmtree(path) # Elimina una carpeta y todos los archivos y subdirectorios dentro de ella.

Entradas relacionadas: