No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Manejo de rutas del sistema: Pathlib

8/14
Recursos

Objetivo

Crear la ruta 鈥./data/raw/鈥 independiente del sistema operativo. Ahora usaremos pathlib, otro m贸dulo de Python.

Implementaci贸n

Dentro del notebook de jupyter:

import pathlib

pathlib.Path()  # Genera un objeto Unix Path o 

CURRENT_DIR = pathlib.Path().resolve()  # Path local completo
DATA_DIR = CURRENT_DIR.parent.joinpath("data", "raw")  # Directorio objetivo

DATA_DIR.exists()  # Revisa si el directorio existe
DATA_DIR.is_dir()  # Revisa si es un directorio

Utiliza el m茅todo 鈥減arent鈥 para obtener el directorio padre y de ah铆 concatenar el path de las carpetas 鈥渄ata鈥 y 鈥渞aw鈥.

Puedes crear una carpeta dentro de un directorio, usando el m茅todo 鈥渕kdir鈥:

DATA_DIR.joinpath("<nombre_carpeta>").mkdir()

Para buscar la ruta de un archivo dentro del proyecto, usando regex:

list(DATA_DIR.glob("<nombre_archivo>"))

Contribuci贸n creada por: N茅stor Arellano.

Aportes 9

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Entendido y esta librer铆a est谩 un poco m谩s f谩cil de manipular.

#
import pathlib
#
CURRENT_DIR = pathlib.Path(".").resolve()
print(type(CURRENT_DIR))

DATA_DIR = CURRENT_DIR.parent.joinpath("data") #聽CURRENT_DIR.parent / "data"
print(DATA_DIR)
print(DATA_DIR.exists())
print(DATA_DIR.is_dir())
#
DATA_DIR.joinpath("external_pathlib", "pathlib", "nested").mkdir(parents=True, exist_ok=True)
#
list(DATA_DIR.glob("*"))

Manejo de rutas del sistema: Pathlib

Esta libreria permite manipular rutas a nivel de objetos mediante los metodos que poseen.

  • Punto de ubicacion actual
import pathlib
pathlib.Path()
  • Mostrar explicitamente la ubicacion actual
#muestra explicitamente la ubicacion actual
pathlib.Path().resolve()
  • Acceder al directorio padre de una ruta
#acceder al directorio padre de una ruta
CURRENT_DIR = pathlib.Path().resolve()
CURRENT_DIR.parent
  • Ir a una ruta especifica
#ir a la ruta ./data/raw
CURRENT_DIR.parent.joinpath("data", "raw")
  • Verificar si la nueva ruta pertenece a un directorio
#verificar si la nueva ruta pertenece a un directorio
DATA_DIR = CURRENT_DIR.parent.joinpath("data", "raw")
DATA_DIR.is_dir()
  • Verificar que un directorio existe
#Verifica que el directorio exista
DATA_DIR.exists()
  • Crear una carpeta
#Crear una carpeta
DATA_DIR.joinpath("pathlib").mkdir()
  • Listar elementos de un directorio
#listar elementos de un directorio
list(DATA_DIR.glob("*"))

Coincido. Me parece una librer铆a mas amigable que OS para manejo de rutas.

Notas en el repositorio de la clase:

[[Implementaci贸n
Dentro del notebook de jupyter:

import pathlib

pathlib.Path()  # Genera un objeto Unix Path o 

CURRENT_DIR = pathlib.Path().resolve()  # Path local completo
DATA_DIR = CURRENT_DIR.parent.joinpath("data", "raw")  # Directorio objetivo

DATA_DIR.exists()  # Revisa si el directorio existe
DATA_DIR.is_dir()  # Revisa si es un directorio
Utiliza el m茅todo 鈥減arent鈥 para obtener el directorio padre y de ah铆 concatenar el path de las carpetas 鈥渄ata鈥 y 鈥渞aw鈥.

Puedes crear una carpeta dentro de un directorio, usando el m茅todo 鈥mkdir鈥:

DATA_DIR.joinpath("<nombre_carpeta>").mkdir()
Para buscar la ruta de un archivo dentro del proyecto, usando regex:

list(DATA_DIR.glob("<nombre_archivo>")) 

El m贸dulo pathlib en Python proporciona una interfaz orientada a objetos para el manejo de rutas del sistema de archivos. Esta interfaz es m谩s moderna y legible en comparaci贸n con las funciones tradicionales del m贸dulo os. pathlib ofrece una serie de m茅todos intuitivos y expresivos para trabajar con rutas y archivos

Pathlib

Al c贸digo aportado por N茅stor Arellano que fue explicado en esta lecci贸n, le he incorporado comentarios para que nos sirva de recordatorio:

Importar la librer铆a:

import pathlib

La expresi贸n <pathlib.Path()> Crea un objeto con el slash apropiado para Linux (/) o el backslash para Windows ()

pathlib.Path()
print("El punto se帽ala la ruta actual: ", pathlib.Path())
CURRENT_DIR = pathlib.Path(".").resolve()
print("La instrucci贸n aqu铆 resuelva <.resolve> indica qu茅 significa el punto (.) de la ruta actual: ", CURRENT_DIR)
print("La clase o tipo de variable que almacena el objeto es: ", type(CURRENT_DIR))

CURRENT_DIR.parent
print("Se imprime el directorio padre de la ruta actual", CURRENT_DIR.parent)
DATA_DIR = CURRENT_DIR.parent.joinpath("data") # CURRENT_DIR.parent / "data", es decir, del directorio padre baja al directorio "data"
print("Imprime la ruta del directorio que se guard贸 en la variable DATA_DIR: ", DATA_DIR)
print("驴Existe 'data'?", DATA_DIR.exists())
print("驴'data' es un directorio o carpeta?", DATA_DIR.is_dir())

Para crear un directorio, primero se indica la ruta donde se crear谩 y luego se agrega la expresi贸n <mkdir> para crearlo: por ejemplo, DATA_DIR.joinpath(鈥減athlib鈥).mkdir()

DATA_DIR.joinpath("external_pathlib", "pathlib", "nested").mkdir(parents=True, exist_ok=True)

Se puede generar una lista para acceder al objeto generador de todo el contenido de la ruta almacenada en la variable:

list(DATA_DIR.glob("*"))
print(list(DATA_DIR.glob("*")))

Se puede filtrar la lista para acceder a la lista del contenido que inicie por alguna expresi贸n, en este caso, por 鈥渘ested鈥 que no est谩 en la lista:

print(list(DATA_DIR.glob("nes*")))

Excelente sistema de gesti贸n. Gracias por la documentaci贸n mucho que aprender.