Cuando se trabaja con rutas de archivos en Python, el módulo pathlib proporciona una excelente manera de manejarlas de forma orientada a objetos. Esto mejora el uso de manipulación de cadenas para las rutas de archivos, lo cual puede ser propenso a errores y menos legible:
from pathlib import Path
p = Path('.') # '.' representa el directorio actual
print(p, type(p)) # <class 'pathlib.PosixPath'> o <class 'pathlib.WindowsPath'> dependiendo de tu sistema operativo
Puedes unir rutas utilizando el operador /. Por ejemplo, para representar un archivo example.txt en el directorio actual, puedes hacer:
file_path = p / 'example.txt' # construye una nueva ruta
print(file_path) # example.txt
El operador / funciona independientemente del sistema operativo subyacente y utiliza el separador de ruta correcto. Observa cómo el operador / es en realidad el método mágico __truediv__() en la clase Path, lo que hace que trabajar con objetos Path sea muy intuitivo.
Para obtener una ruta absoluta a partir de un objeto Path, puedes usar el método absolute():
abs_path = file_path.absolute() # obtiene la ruta absoluta
print(abs_path) # imprime la ruta absoluta, como /home/user/example.txt en Unix o C:\\user\\example.txt en Windows
La clase Path tiene muchos métodos útiles para operaciones comunes:
Path.cwd(): retorna el directorio de trabajo actual como un nuevo objeto Path
Path.home(): retorna el directorio de inicio como un nuevo objeto Path
Path.exists(): verifica si la ruta existe
Path.is_file(): verifica si la ruta es un archivo
Path.is_dir(): verifica si la ruta es un directorio
Path.mkdir(): crea un nuevo directorio en la ruta
Path.glob(): devuelve un generador que produce todos los archivos coincidentes en el directorio
Veamos cómo se usan algunos de estos métodos:
print(Path.cwd()) # imprime el directorio de trabajo actual
print(Path.home()) # imprime el directorio de inicio
if not file_path.exists(): # verifica si un archivo existe
print(f'El archivo {file_path} no existe.')
if file_path.is_file(): # verifica si es un archivo
print(f'{file_path} es un archivo.')
new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True) # crea un nuevo directorio, no hace nada si ya existe
for file in p.glob('*.txt'): # itera sobre todos los archivos .txt en el directorio actual
print(file)
Recuerda reemplazar p con tu objeto Path y 'example.txt' con el nombre de tu archivo según corresponda. El módulo pathlib es una herramienta poderosa para la manipulación de archivos y directorios en Python.
Desafío: De Relativo a Absoluto
La aparición de archivos digitales ha hecho que la gestión de una gran cantidad de documentos sea mucho más accesible. Sin embargo, administrar las rutas a estos documentos puede ser un poco complicado, especialmente cuando se trata de rutas relativas y absolutas. Trabajas como desarrollador de software en una empresa de archivos digitales. Tu tarea es construir un programa que pueda convertir rutas relativas en rutas absolutas para asegurar un seguimiento y acceso adecuados a los documentos.
Dada una ruta relativa, tu programa debe imprimir su ruta absoluta correspondiente.
La única línea de entrada contiene una sola ruta relativa.
La salida de tu programa debe ser la ruta absoluta correspondiente a la ruta relativa ingresada.