Lo claro que tiene todo Jesus es una maravilla. Un libro abierto!
Plantillas de proyectos para ciencia de datos
¿Qué son y por qué utilizar plantillas de proyectos?
Instalar Cookiecutter
Crear plantillas de proyecto personalizadas
Implementar hooks
Distribuir plantilla de proyecto
Manejo de archivos en Python
Manejo de rutas: problemática
Manejo de rutas del sistema: OS
Manejo de rutas del sistema: Pathlib
Manejo de rutas del sistema: PyFilesystem2
Crear referencias relativas de archivos
Caso práctico
Descarga de plantilla y configuración de ambiente virtual
Utilizar proyecto como un módulo de Python
Flujo de trabajo de los notebooks
Conclusiones
Aplica estas herramientas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Jesús Vélez Santiago
Necesitamos encontrar una forma de evitar que nuestro proyecto se rompa cuando movamos de lugar un archivo dentro del proyecto, para esto usaremos Referencias Relativas.
Usando PyProjRoot:
import pyprojroot
pyprojroot.here() # Esto es un Posix Path (pathlib)
pyprojroot.here().joinpath("data", "raw")
Usando PyHere:
import pyhere
pyhere.here() # También regresa un Posix Path
Estas dos líneas de código regresan el mismo resultado:
pyprojroot.here("data").joinpath("raw")
pyhere.here().resolve() / "data" / "raw"
def make_dir_function(dir_name):
def dir_function(*args):
return pyprojroot.here()joinpath(dir_name, *args)
return dir_function
data_dir = make_dir_function("data")
data_dir("raw", "pathlib") # Devuelve el path personalizado
Contribución creada por: Néstor Arellano.
Aportes 8
Preguntas 2
Lo claro que tiene todo Jesus es una maravilla. Un libro abierto!
root_indicators = [
".here",
"requirements.txt",
"setup.py",
".vscode", # vscode project
".idea", # pycharm project
".git",
".spyderproject", # spyder
".spyproject", # spyder
".ropeproject" # rope
]
básicamente tiene una lista de indicadores y un scrip posterior que va de carpeta padre (…) en carpeta padre buscando los indicadores y al encontralos retorna su ubicación siendo ese el root
aquí el link del repo
Las referencias relativas evitan que el proyecto se rompa cuando movemos de lugar un archivo dentro del mismo
Usando pyprojroot
import pyprojroot
#ruta actual del proyecto
pyprojroot.here()
# Ir a raw
pyprojroot.here().joinpath("curso-entorno-avanzado-ds-manejo-rutas", "data", "raw")
Usando pyhere
import pyhere
pyhere.here()
# Los n veces dos puntos indica que la raiz del proyecto esta n pasos hacia atras
pyhere.here().resolve()
# ir a raw
pyhere.here().resolve() / "curso-entorno-avanzado-ds-manejo-rutas" / "data" / "raw"
Creando shorcut
def make_dir_function(dir_name):
def dir_function(*args):
return pyprojroot.here().joinpath(dir_name, *args)
return dir_function
data_dir = make_dir_function("curso-entorno-avanzado-ds-manejo-rutas/data")
# verifica si el archivo .gitkeep existe en la ruta espeficicada
data_dir("raw", ".gitkeep").exists()
data_dir = make_dir_function("curso-entorno-avanzado-ds-manejo-rutas/notebooks")
# verifica si el archivo un notebooks existe en la ruta espeficicada
notebooks_dir("0.0-paths_management_platzi-introduction.ipynb").exists()
Muy completo el curso! . Thanks
Entendido y aplicado
#
import pyprojroot
pyprojroot.here().joinpath("data", "raw")
#
import pyhere
pyhere.here("data", "raw")
pyhere.here().resolve().joinpath("raw")
#
def make_dir_function(dir_name):
def dir_function(*args):
if isinstance(dir_name, str):
return pyprojroot.here().joinpath(dir_name, *args)
else:
return pyprojroot.here().joinpath(*dir_name, *args)
return dir_function
# Nested lambda.
make_dir_function_lambda = lambda dir_name: lambda *args: pyprojroot.here().joinpath(dir_name, *args)
#
data_dir = make_dir_function("data")
data_dir("external", "os", "do")
#figures_dir = make_dir_function_lambda("figures")
figures_dir("amazing", "plots", "here")
Una ruta absoluta comienza desde el directorio raíz del sistema de archivos. Por ejemplo, C:\Users\Usuario\Proyecto\carpeta1\archivo1.txt (en Windows) o /home/usuario/proyecto/carpeta1/archivo1.txt (en Linux).
Una ruta relativa comienza desde la ubicación actual del archivo o script que estás ejecutando. Por ejemplo, si estás ejecutando el archivo script.py
en la carpeta mi_proyecto, la ruta relativa para acceder a archivo1.txt sería carpeta1/archivo1.txt.
Unificación de Rutas:
\
en Windows y /
en Unix/Linux. El manejo de rutas unifica estas representaciones para hacer que el código sea independiente del sistema operativo.Construcción de Rutas:
Portabilidad del Código:
Organización del Proyecto:
Colaboración y Distribución:
ChatGPT
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?