目次
1. Introducción
Python es extremadamente flexible en lo que respecta a la manipulación de archivos y permite automatizar muchas tareas con código sencillo. En este artículo se presentan varios métodos para “obtener nombres de archivos” usando Python. En particular, se explican los módulos de la biblioteca estándaros
y pathlib
. Al leer este artículo, adquirirás las habilidades necesarias para manipular eficientemente los archivos de un directorio y crear scripts que obtengan o filtren nombres de archivos.2. Conceptos básicos para obtener nombres de archivos en Python
Comencemos con los métodos básicos para obtener nombres de archivos en Python. Con la funciónos.path.basename()
se puede obtener el nombre del archivo a partir de una ruta específica.2.1 Cómo usar os.path.basename()
os.path.basename()
es una función que extrae únicamente el nombre del archivo desde una ruta completa. En el siguiente ejemplo se muestra cómo obtener el nombre del archivo desde la ruta:import os
file_path = "/user/home/document/file.txt"
file_name = os.path.basename(file_path)
print(file_name) # Resultado: "file.txt"
2.2 Obtener el nombre del directorio con os.path.dirname()
De manera similar, os.path.dirname()
permite obtener el nombre del directorio desde una ruta de archivo. Así es posible separar el nombre del archivo y el directorio.dir_name = os.path.dirname(file_path)
print(dir_name) # Resultado: "/user/home/document"

3. Obtener todos los nombres de archivos en un directorio
Para obtener en forma de lista todos los archivos y carpetas en un directorio,os.listdir()
resulta útil. Además, para obtener archivos en subdirectorios de forma recursiva, se puede usar os.walk()
.3.1 Obtener nombres de archivos con os.listdir()
Con os.listdir()
se obtiene una lista con todos los archivos y carpetas de un directorio específico. Es ideal para operaciones simples.import os
dir_path = "/user/home/document"
files = os.listdir(dir_path)
print(files) # Resultado: ["file1.txt", "file2.txt", "subfolder"]
3.2 Obtener nombres de archivos recursivamente con os.walk()
Si deseas obtener archivos de forma recursiva incluyendo subdirectorios, os.walk()
es la opción más efectiva. El siguiente código lista todos los archivos del directorio y sus subdirectorios:import os
dir_path = "/user/home/document"
for root, dirs, files in os.walk(dir_path):
for file in files:
print(os.path.join(root, file))
3.3 Añadir manejo de errores
Si el directorio no existe o no se tienen permisos, pueden generarse errores. Por ello, se recomienda agregar manejo de excepciones contry-except
:dir_path = "/invalid/path"
try:
files = os.listdir(dir_path)
print(files)
except FileNotFoundError:
print(f"{dir_path} no se encuentra.")
4. Obtener y cambiar extensiones
Al obtener nombres de archivos, en ocasiones es necesario manipular sus extensiones. Conos.path.splitext()
es posible separarlas o modificarlas.4.1 Obtener extensiones con os.path.splitext()
os.path.splitext()
devuelve el nombre del archivo y su extensión por separado.import os
file_path = "/user/home/document/file.txt"
file_name, file_ext = os.path.splitext(file_path)
print(file_name) # Resultado: "/user/home/document/file"
print(file_ext) # Resultado: ".txt"
4.2 Cambiar extensiones
Para cambiar la extensión, basta con añadir la nueva extensión al nombre obtenido conos.path.splitext()
:new_file_path = file_name + ".jpg"
print(new_file_path) # Resultado: "/user/home/document/file.jpg"

5. Uso avanzado del módulo pathlib
para obtener nombres de archivos
Desde Python 3.4, el módulo pathlib
es muy útil para trabajar con rutas de archivos. Este permite manipular rutas de manera orientada a objetos y más intuitiva.5.1 Obtener nombres de archivos con Path.iterdir()
Con el método iterdir()
de pathlib.Path()
se obtienen los nombres de archivos y carpetas de un directorio:from pathlib import Path
dir_path = Path("/user/home/document")
for item in dir_path.iterdir():
print(item.name)
5.2 Obtención recursiva de archivos con rglob()
Si necesitas obtener nombres de archivos recursivamente incluyendo subdirectorios, rglob()
es ideal. También puede usarse como alternativa a os.walk()
:for file in dir_path.rglob("*"):
print(file)
6. Filtrar nombres de archivos
Cuando se desea obtener solo nombres de archivos que cumplan ciertas condiciones, es posible filtrarlos con el móduloglob
o con el método glob()
de pathlib
.6.1 Filtrar por extensión
Para obtener solo archivos con una extensión específica, se utiliza el comodín*
:from pathlib import Path
dir_path = Path("/user/home/document")
for file in dir_path.glob("*.txt"):
print(file)
Este código obtiene únicamente los archivos .txt
dentro del directorio especificado.7. Conclusión
Existen múltiples formas de obtener nombres de archivos con Python, y lo más importante es elegir el método adecuado según la necesidad. Combinando las operaciones básicas del móduloos
con las funciones avanzadas de pathlib
, podrás manejar directorios y archivos de manera eficiente. En la próxima entrega, exploraremos tareas relacionadas como renombrar, mover y eliminar archivos.