No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripción 🔥

Aprende todo un fin de semana sin pagar una suscripción 🔥

Regístrate

Comienza en:

3D
16H
53M
38S

Manejo de rutas del sistema: PyFilesystem2

9/14
Recursos

Objetivo

Crear la ruta “./data/raw/” independiente del sistema operativo. Ahora usaremos PyFilesystem2.

Implementación

Dentro del notebook de jupyter:

import fs

fs.open_fs(".")  # Abre una conexión con el path actual (OSFS)

CURRENT_DIR = fs.open_fs(".")

CURRENT_DIR.exists(".")  # Revisa si el directorio existe
DATA_DIR.listdir(".")  # Muestra el contenido dentro de la ruta.
  • PyFilesystem2 genera un objeto OSFS (Operating System Filesystem).

  • El inconveniente con este módulo es que el objeto OSFS solo detecta los objetos que existen en la ruta actual, por lo que si intentas acceder a un archivo ubicado en el directorio padre “…” te saltará un IndexError.

  • Si necesitas que el objeto OSFS también detecte el directorio padre, además de las carpetas “data” y “raw”, vuelve a generar el objeto de la siguiente forma:

fs.open_fs("../data/raw/")  # Ruta objetivo

Contribución creada por: Néstor Arellano.

Aportes 12

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

me quedo con os

Veo muchos comentarios indicando que os y pathlib son mejores que PyFilesystem. Creo que tienen sus razones dado que PyFilesystem es orientado a objetos y de pronto muchos no nos gusta cómo funciona.

El poder de está librería se ve cuando tengamos las siguientes condiciones:

  1. Necesitamos que funcione sin importar si estamos en Windows, Linux, Mac, AWS S3, Archivos zip, Servidores FTP, etc.
  2. Es util para crear Test unitarios dado que se puede manejar archivos en memoria y no archivos del disco duro.

🚙💨_ _ _ 🚗💨 _ _ _ 🛻💨
Bentley, Ferrari o Aston Martin…
La pregunta no radica en cuál es mejor, sino en cuál se adapta mejor a tus necesidades.

“lo estás haciendo excelente”. No tanto. Quise crear una carpeta y no pude 😦

Entendido y esta librería me gusto mucho.

#
import fs
#
CURRENT_DIR =fs.open_fs(".")
print(CURRENT_DIR.exists("."))
CURRENT_DIR.exists("..")
#
DATA_DIR = fs.open_fs("../")
print(DATA_DIR.exists(""))
DATA_DIR.listdir(".")

for path in DATA_DIR.walk.files():
    print(path)

    with DATA_DIR.open(path) as data_file:
        print(data_file.read())

for path in DATA_DIR.walk.dirs():
    print(path)
#
DATA_DIR.makedir("external_fs",recreate=True)
#
sub_data_dir = DATA_DIR.makedirs("external_fs/fs/nested", recreate=True)
sub_data_dir.makedir("test")

Manejo de rutas del sistema: PyFilesystem2

PyFilesystem2 genera un objeto OSFS (Operating System Filesystem). El inconveniente con este módulo es que el objeto OSFS solo detecta los objetos que existen en la ruta actual, por lo que si intentas acceder a un archivo ubicado en el directorio padre “…” te saltará un IndexError.

  • Mostrar la ruta actual
import fs
fs.open_fs(".")
  • Verificar que un directorio exista
#Verifica que el directorio exista
CURRENT_DIR = fs.open_fs(".")
CURRENT_DIR.exists("/ruta_prueba")
  • Error al verificar la existencia del directorio padre. ATENTOS
#Esta libreria trabaja con conexiones
#Solo existe lo que esta en la ruta que se define cono conexion
#Marca error al verificar que existe el directorio padre de la ruta
CURRENT_DIR.exists("..")
  • Ir a una carpeta especifica
#Ir a la carpeta /data/raw
#la ventaja de esta libreria es que trabajas con slash (/) en cualquier Sistema operativo
fs.open_fs("../data/raw")
  • Listar archivos de una carpeta
#Listar lo que hay en una carpeta
DATA_DIR = fs.open_fs("../data/raw")
DATA_DIR.listdir(".")
  • Iterar archivos de una carpeta
#Iterar archivos de una carpeta
for path in DATA_DIR.walk.files():
    print(path)
  • Mostrar contenido de los archivos iterados
#mostrar contenido de los archivos iterados
for path in DATA_DIR.walk.files():
    print(path)
    with DATA_DIR.open(path) as data_file:
        print(data_file.readlines())
  • Crear una carpeta
#Crear una carpeta
#solo se puede crear dentro de la conexion donde te encuentras
DATA_DIR.makedir("external_fs", recreate=True)

No entiendo para que sirve esto 😦

No me convence, creo que es más complicado que soluciones anteriores

good , no sabia q se podia tener ese problema 😃

No entendia el por qué del parámetro recreate del makedir. Fui a la documentación y lo explica, les dejo la captura:

Muy interesantes los tres, igual creo que hay que trabajar a mayor profundidad con todos para definir cual es el que mas le gusta a cada uno.