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
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!
Muy completo el curso! . Thanks
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()
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
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?