Librería glob (Expansión de nombres de paths estilo Unix)#
Última modificación: Mayo 14, 2022
[1]:
import glob
[2]:
#
# Nombres de archivo terminados en `.ipynb` en la carpeta actual
#
glob.glob("*.ipynb")
[2]:
['1-01_datetime.ipynb',
'1-02-re.ipynb',
'1-03_os.ipynb',
'1-04_glob.ipynb',
'1-05_collections.ipynb',
'1-06_logging.ipynb']
[3]:
%%writefile /tmp/archivo-con-nombre-escapado-*-?.txt
Sin contenido
Writing /tmp/archivo-con-nombre-escapado-*-?.txt
[4]:
#
# El nombre de archivo anterior contiene wildcards que se interpretan
# como patrones en Unix. Se usa `glob.escape` para poder buscar estos
# patrones.
#
glob.escape("/tmp/archivo-con-nombre-escapado-*-?.txt")
[4]:
'/tmp/archivo-con-nombre-escapado-[*]-[?].txt'
[5]:
#
# Búsqueda con nombres de archivos que contiene caracteres especiales
#
glob.glob(glob.escape("/tmp/archivo-con-nombre-escapado-*-?.txt"))
[5]:
['/tmp/archivo-con-nombre-escapado-*-?.txt']
[6]:
import os
#
# A continuación se genera un arbol de directorios con archivos
#
os.makedirs('/tmp/branch-0/branch-0-0/branch-0-0-0')
os.makedirs('/tmp/branch-0/branch-0-0/branch-0-0-1')
os.makedirs('/tmp/branch-1/branch-1-1/branch-1-1-0')
os.makedirs('/tmp/branch-1/branch-1-1/branch-1-1-1')
#
# Y se crean archivos vacios en los directorios terminales
#
!touch /tmp/branch-0/branch-0-0/branch-0-0-0/demo-0.txt
!touch /tmp/branch-0/branch-0-0/branch-0-0-1/demo-1.txt
!touch /tmp/branch-1/branch-1-1/branch-1-1-0/demo-2.txt
!touch /tmp/branch-1/branch-1-1/branch-1-1-1/demo-3.txt
[7]:
#
# Búsqueda recursiva
#
glob.glob("/tmp/**/*.txt", recursive=True)
[7]:
['/tmp/archivo-con-nombre-escapado-*-?.txt',
'/tmp/branch-1/branch-1-1/branch-1-1-1/demo-3.txt',
'/tmp/branch-1/branch-1-1/branch-1-1-0/demo-2.txt',
'/tmp/branch-0/branch-0-0/branch-0-0-1/demo-1.txt',
'/tmp/branch-0/branch-0-0/branch-0-0-0/demo-0.txt']
Ejemplos de patrones: Qué patrones representan los siguientes ejemplos:
glob.glob('./[0-9].*')
glob.glob('?.gif')
glob.glob('**/.txt', recursive=True)
glob.glob('./**/', recursive=True)