6.1 Trabajando con archivos
Python ofrece muchas funciones y módulos incorporados para trabajar con
archivos y directorios. Las operaciones principales se realizan usando
módulos incorporados como os
, shutil
y otros.
Tres operaciones principales con archivos:
- Copiar
- Mover
- Eliminar
Para realizar estas operaciones, el módulo shutil
encaja perfectamente.
Copiar un archivo
import shutil
shutil.copy('source.txt', 'destination.txt')
Mover un archivo
import shutil
shutil.move('source.txt', 'destination.txt')
Eliminar un archivo
import os
os.remove('example.txt')
Más fácil que nunca.
6.2 Comprobación de existencia de archivo
Muy a menudo es necesario verificar si un archivo específico existe o no.
Para esto, el módulo os
tiene un método especial —
exists()
.
Comprobación de existencia de archivo
import os
if os.path.exists('example.txt'):
print("El archivo existe")
else:
print("El archivo no existe")
# Si el archivo no existe, el programa ejecutará las acciones descritas en el bloque else.
# Por ejemplo, puedes mostrar una advertencia, crear un nuevo archivo o salir del programa.
Si el archivo no existe, el programa puede manejarlo con condiciones o lanzar una excepción.
6.3 Comprobación del tipo de objeto: archivo o directorio
Muy a menudo es necesario verificar si un objeto es un archivo o un directorio. Por ejemplo, si estás leyendo todo el contenido de un directorio y los archivos deben procesarse de una manera, y los directorios de otra.
Para tales casos, hay dos métodos especiales: isdir()
, que verifica si un objeto es un directorio, y isfile()
, que verifica si un objeto es un archivo.
Comprobación — es un directorio o no
if os.path.isdir('example_directory'):
print("Es un directorio")
else:
print("No es un directorio")
Comprobación — es un archivo o no
if os.path.isfile('example_file'):
print("Es un archivo")
else:
print("No es un archivo")
Son funciones muy útiles que usarás más de lo que piensas. :)
6.4 Trabajando con rutas
El módulo os
tiene un submódulo os.path
,
que contiene funciones útiles para trabajar con archivos y directorios. Aquí
algunas de ellas:
Obtención de la extensión de archivo
La función splitext()
divide el nombre del archivo en dos partes y
devuelve una lista de dos elementos: el nombre y la extensión.
import os.path
# Obtención de la extensión de archivo
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"Extensión de archivo: {file_extension}")
Obtención del nombre de archivo sin extensión
import os.path
# Obtención del nombre de archivo sin extensión
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"Nombre de archivo sin extensión: {file_name}")
Obtención del nombre de archivo desde la ruta
La función basename()
devuelve solo el nombre del archivo, quitando
toda la ruta.
import os.path
# Obtención del nombre de archivo desde la ruta
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"Nombre de archivo: {file_name}")
Obtención del directorio desde la ruta
También es fácil obtener solo el directorio del nombre del archivo usando
la función dirname()
.
import os.path
# Obtención del directorio desde la ruta
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"Directorio: {directory}")
Unión de rutas
Si tienes un directorio y un nombre de archivo por separado, puedes obtener la ruta completa a ese archivo.
import os.path
# Unión de rutas
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Ruta completa: {full_path}")
6.5 Rutas independientes de la plataforma
Al trabajar con rutas, es importante considerar las diferencias entre los sistemas operativos. Los separadores de ruta pueden variar, y el código que funciona en una plataforma puede no funcionar en otra. Para evitar problemas al transferir código entre diferentes sistemas operativos, utiliza funciones como os.path.join()
, os.path.abspath()
y os.path.dirname()
, que aseguran compatibilidad con varias plataformas.
Por ejemplo:
import os
# Unión de rutas de manera independiente de la plataforma
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"Ruta completa: {full_path}")
Obtención de la ruta absoluta
Si solo tienes una ruta relativa al directorio de trabajo actual, pero deseas
convertirla en absoluta, para esto está
la función abspath()
.
import os.path
# Obtención de la ruta absoluta
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"Ruta absoluta: {absolute_path}")
¡Importante!
Siempre utiliza funciones del sistema
al trabajar con rutas, ya que tu código podría ejecutarse en otro sistema
operativo, donde el separador de archivos no es \
, sino /
, o donde están prohibidos «:»
en rutas o
cualquier otra cosa.
GO TO FULL VERSION