Solución:
Este tutorial le mostrará algunas formas de iterar archivos en un directorio determinado y realizar algunas acciones en ellos usando Python.
1. Utilizando os.listdir()
#
Este método devuelve una lista que contiene los nombres de las entradas en el directorio dado por la ruta. La lista está en orden arbitrario y no incluye las entradas especiales ‘.’ y ‘..’ incluso si están presentes en el directorio.
Ejemplo: imprime todas las rutas a los archivos que tienen jpg
o png
extensión en C:Usersadmin
directorio
import os
directory =r'C:Usersadmin'for filename in os.listdir(directory):if filename.endswith(".jpg")or filename.endswith(".png"):print(os.path.join(directory, filename))else:continue
2. Usando os.scandir()
#
Desde Python 3.5, las cosas son mucho más fáciles con os.scandir()
. Este ejemplo hace lo mismo que el anterior pero usa os.scandir()
en lugar de os.listdir()
import os
directory =r'C:Usersadmin'for entry in os.scandir(directory):if(entry.path.endswith(".jpg")or entry.path.endswith(".png"))and entry.is_file():print(entry.path)
Ambos os.listdir()
y os.scandir
Los enfoques solo enumeran los directorios o archivos inmediatamente debajo de un directorio. Si desea enumerar archivos y carpetas de forma recursiva en un directorio determinado, considere utilizar los métodos siguientes.
3. Utilizando os.walk()
#
Este método iterará sobre todos los archivos descendientes en subdirectorios. Considere el ejemplo anterior, pero en este caso, este método imprime de forma recursiva todas las imágenes en C:Usersadmin
directorio.
import os
for subdir, dirs, files in os.walk(r'C:Usersadmin'):for filename in files:
filepath = subdir + os.sep + filename
if filepath.endswith(".jpg")or filepath.endswith(".png"):print(filepath)
4. Usando glob
módulo #
El módulo glob encuentra todos los nombres de ruta que coinciden con un patrón especificado de acuerdo con las reglas utilizadas por el shell de Unix, aunque los resultados se devuelven en orden arbitrario.
Consideremos un ejemplo en el que enumeraremos todos png
y pdf
archivos en C:Usersadmin
directorio
import glob
# Print png images in folder C:Usersadminfor filepath in glob.iglob(r'C:Usersadmin*.png'):print(filepath)# Print pdf files in folder C:Usersadminfor filepath in glob.iglob(r'C:Usersadmin*.pdf'):print(filepath)
Por defecto, glob.iglob
solo enumera los archivos inmediatamente en el directorio dado. Para enumerar de forma recursiva todos los archivos en carpetas anidadas, configure el recursive
param a True
import glob
# Recursively print png images in folder C:Usersadminfor filepath in glob.iglob(r'C:Usersadmin*.png', recursive=True):print(filepath)# Recursively print pdf files in folder C:Usersadminfor filepath in glob.iglob(r'C:Usersadmin*.pdf', recursive=True):print(filepath)
Puedes usar glob.iglob
o glob.glob
. La diferencia es, glob.iglob
devuelve un iterador que produce las rutas que coinciden con un patrón de nombre de ruta mientras glob.glob
devuelve una lista.
5. Itere de forma recursiva utilizando Path
clase de pathlib
módulo #
El código a continuación hace lo mismo que el ejemplo anterior, que enumera e imprime la imagen png en una carpeta pero usa el pathlib.Path
from pathlib import Path
paths = Path('C:Usersadmin').glob('**/*.png')for path in paths:# because path is object not string
path_in_str =str(path)# Do thing with the pathprint(path_in_str)
Si posees alguna incertidumbre o disposición de arreglar nuestro noticia te invitamos dejar una anotación y con mucho gusto lo observaremos.