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 鈥渄ata鈥 y 鈥渞aw鈥, 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.

鈥渓o 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.