Cómo mover archivos y trabajar con directorios en Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Fundamentos del sistema de archivos en Python

Trabajar con el sistema de archivos es una de las tareas más comunes en el desarrollo con Python. Este proceso incluye crear y eliminar archivos, copiarlos, moverlos, renombrarlos, así como crear directorios y verificar su existencia. Las operaciones con archivos son la base fundamental para la automatización de procesos, el desarrollo web, el análisis de datos, la gestión de configuraciones y el despliegue de aplicaciones.

Python ofrece un amplio conjunto de bibliotecas integradas para trabajar eficientemente con el sistema de archivos. Las herramientas principales son los módulos os, shutil y pathlib. Estas bibliotecas cubren prácticamente todos los escenarios de uso posibles, desde operaciones básicas hasta tareas avanzadas.

Cómo mover archivos en Python

Usando la función shutil.move()

Cuando necesitas mover un archivo de un directorio a otro, la forma más simple y eficaz es usar la función shutil.move(). Esta función funciona de manera similar al comando mv en los sistemas operativos Linux y Unix.

import shutil

shutil.move('source/file.txt', 'destination/file.txt')

La función shutil.move() maneja automáticamente tanto archivos individuales como directorios completos. Al mover un archivo, también puedes renombrarlo al mismo tiempo. Es importante tener en cuenta que si ya existe un archivo con el mismo nombre en la carpeta de destino, se sobrescribirá sin previo aviso.

Crear directorios al mover archivos

Al mover archivos, a menudo es necesario crear nuevos directorios. El siguiente enfoque resuelve este problema:

import os
import shutil

src = 'data/report.txt'
dst_dir = 'archive'
os.makedirs(dst_dir, exist_ok=True)
shutil.move(src, os.path.join(dst_dir, 'report.txt'))

La función os.makedirs() con el parámetro exist_ok=True crea una cadena de directorios si no existen y no genera un error si los directorios ya están presentes.

Mover directorios completos

La función shutil.move() también permite mover directorios enteros:

shutil.move('old_folder', 'new_location/old_folder')

Cómo copiar archivos y crear enlaces

Copia básica de archivos

Para copiar archivos, Python ofrece varias funciones con diferentes funcionalidades:

import shutil

# Copiar el contenido del archivo
shutil.copy('file.txt', 'backup/file.txt')

La función copy() solo copia el contenido del archivo, pero no conserva los metadatos. Para una copia completa que mantenga todos los atributos del archivo, se usa copy2():

shutil.copy2('file.txt', 'backup/file.txt')

Copia de directorios completos

Para copiar directorios enteros con todo su contenido, se utiliza la función copytree():

shutil.copytree('project', 'project_backup')

Creación de enlaces duros

Un enlace duro es un nombre adicional para un archivo existente en el sistema de archivos:

import os

os.link('file.txt', 'linked_file.txt')

Un enlace duro significa que un mismo archivo físico es accesible desde varias rutas diferentes. Los cambios en el contenido del archivo se reflejan en todos los enlaces. La cantidad de enlaces duros se puede verificar con os.stat().st_nlink.

Gestión de directorios

Creación de directorios

Python ofrece dos funciones principales para crear directorios:

import os

# Crear un solo directorio
os.mkdir('new_folder')

# Crear una estructura anidada de directorios
os.makedirs('parent/child/grandchild', exist_ok=True)

La función mkdir() crea solo un directorio y lanza una excepción FileExistsError si el directorio ya existe.

Blogs

Book Recommendations