Saltar al contenido

Cómo iterar sobre archivos en el directorio python

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *