En este artículo, cubriremos cómo enumeramos todos los archivos en un directorio en python.
¿Qué es un directorio?
Un directorio, también conocido a veces como carpeta, es una estructura organizativa unitaria en el sistema de archivos de una computadora para almacenar y ubicar archivos o más carpetas. Python ahora admite varias API para enumerar el contenido del directorio. Por ejemplo, podemos usar las funciones Path.iterdir, os.scandir , os.walk , Path.rglob u os.listdir .
Directorio en uso: gfg
Método 1: Módulo Os
- El método os.listdir() obtiene la lista de todos los archivos y directorios en un directorio específico. Por defecto, es el directorio actual. Más allá del primer nivel de carpetas, os.listdir() no devuelve ningún archivo o carpeta.
Sintaxis : os.listdir(ruta)
Parámetros :
- Ruta del directorio
Tipo de devolución: devuelve una lista de todos los archivos y directorios en la ruta especificada
Ejemplo 1: obtener todos los archivos de lista en un directorio
Python
# import OS module import os # Get the list of all files and directories path = "C://Users//Vanshi//Desktop//gfg" dir_list = os.listdir(path) print("Files and directories in '", path, "' :") # prints all files print(dir_list)
Producción:
Ejemplo 2: Para obtener solo archivos .txt.
Python3
# import OS import os for x in os.listdir(): if x.endswith(".txt"): # Prints only text file present in My Folder print(x)
Producción:
- OS.walk() genera nombres de archivos en un árbol de directorios. Esta función devuelve una lista de archivos en una estructura de árbol. El método recorre todos los directorios de un árbol.
Sintaxis: os.walk(top, topdown, onerror, followlinks)
- top: es el directorio superior desde el que desea recuperar los nombres de los archivos y carpetas de los componentes.
- topdown: especifica que los directorios se deben escanear de arriba hacia abajo cuando se establece en True. Si este parámetro es falso, los directorios se examinarán de arriba hacia abajo.
- onerror: proporciona un controlador de errores si se encuentra un error
- followlinks : si se establece en True, visita las carpetas a las que hacen referencia los enlaces del sistema
Retorno: devuelve el nombre de cada archivo y carpeta dentro de un directorio y cualquiera de sus subdirectorios.
Python3
# import OS module import os # This is my path path = "C://Users//Vanshi//Desktop//gfg" # to store files in a list list = [] # dirs=directories for (root, dirs, file) in os.walk(path): for f in file: if '.txt' in f: print(f)
Producción:
- os.scandir() es compatible con Python 3.5 y versiones posteriores.
Sintaxis: os.scandir(ruta = ‘.’)
Tipo de devolución: devuelve un iterador del objeto os.DirEntry.
Python3
# import OS module import os # This is my path path = "C://Users//Vanshi//Desktop//gfg" # Scan the directory and get # an iterator of os.DirEntry objects # corresponding to entries in it # using os.scandir() method obj = os.scandir() # List all files and directories in the specified path print("Files and Directories in '% s':" % path) for entry in obj: if entry.is_dir() or entry.is_file(): print(entry.name)
Producción:
Método 2: Usando el módulo global
El módulo glob se usa para recuperar archivos/nombres de ruta que coincidan con un patrón específico.
- Método glob(): con glob, podemos usar comodines («*, ?, [rangos]) para hacer que la recuperación de rutas sea más simple y conveniente.
Ejemplo:
Python3
import glob # This is my path path = "C:\\Users\\Vanshi\\Desktop\\gfg" # Using '*' pattern print('\nNamed with wildcard *:') for files in glob.glob(path + '*'): print(files) # Using '?' pattern print('\nNamed with wildcard ?:') for files in glob.glob(path + '?.txt'): print(files) # Using [0-9] pattern print('\nNamed with wildcard ranges:') for files in glob.glob(path + '/*[0-9].*'): print(files)
Producción:
- El método iglob() se puede utilizar para imprimir nombres de archivos de forma recursiva si el parámetro recursivo se establece en True.
Sintaxis: glob.iglob(ruta, *, recursivo=Falso)
Ejemplo:
Python3
import glob # This is my path path = "C:\\Users\\Vanshi\\Desktop\\gfg**\\*.txt" # It returns an iterator which will # be printed simultaneously. print("\nUsing glob.iglob()") # Prints all types of txt files present in a Path for file in glob.iglob(path, recursive=True): print(file)
Producción:
Publicación traducida automáticamente
Artículo escrito por aksrathod07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA