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 UnixPath 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 "parent" para obtener el directorio padre y de ahí concatenar el path de las carpetas "data" y "raw".
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:
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 actualpathlib.Path().resolve()
Acceder al directorio padre de una ruta
#acceder al directorio padre de una rutaCURRENT_DIR = pathlib.Path().resolve()CURRENT_DIR.parent
Ir a una ruta especifica
#ir a la ruta ./data/rawCURRENT_DIR.parent.joinpath("data","raw")
Verificar si la nueva ruta pertenece a un directorio
#verificar si la nueva ruta pertenece a un directorioDATA_DIR = CURRENT_DIR.parent.joinpath("data","raw")DATA_DIR.is_dir()
Verificar que un directorio existe
#Verifica que el directorio existaDATA_DIR.exists()
Crear una carpeta
#Crear una carpetaDATA_DIR.joinpath("pathlib").mkdir()
Listar elementos de un directorio
#listar elementos de un directoriolist(DATA_DIR.glob("*"))
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.parentprint("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("pathlib").mkdir()
Se puede filtrar la lista para acceder a la lista del contenido que inicie por alguna expresión, en este caso, por "nested" que no está en la lista:
print(list(DATA_DIR.glob("nes*")))
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
Coincido. Me parece una librería mas amigable que OS para manejo de rutas.
De acuerdo 👍
De Acuerdo!
Notas en el repositorio de la clase:
[[ImplementaciónDentro del notebook de jupyter:import pathlib
pathlib.Path() # Genera un objeto UnixPath 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 “parent” para obtener el directorio padre y de ahí concatenar el path de las carpetas “data” y “raw”.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>"))
Existe una libreria para todo?
Para el manejo de archivos en Python actualmente, pathlib es indiscutiblemente la mejor opción.
Aunque el módulo os (y su compañero os.path) todavía funciona perfectamente y lo vas a seguir viendo en mucho código antiguo, pathlib (introducido en Python 3.4) se ha convertido en el estándar moderno por varias razones de peso.
y cuál es la forma de borrar carpetas sin necesidad de ir directamente a vscode sino a través de cñodigo?
rm -r {directorio/archivo.extension}
Tuve que realizar lo siguiente, porque la ruta me tomaba manejo_de_ruta/notebooks/data/raw