Para obter unha lista de nomes de ficheiros e directorios (nomes de cartafoles) en Python, use a función do módulo os os.listdir().
os.listdir(path=’.’)
Devolve unha lista que contén os nomes das entradas no directorio especificado pola ruta.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
O módulo os está incluído na biblioteca estándar e non é necesario instalar. Non obstante, é necesario “importar”.
A seguinte información ofrécese aquí.
- Obter unha lista de nomes de ficheiros e directorios.
- Obtén só unha lista de nomes de ficheiros
- Obtén só unha lista de nomes de directorio
O seguinte é un exemplo dunha estrutura de ficheiros (directorio).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Ademais de os.listdir(), tamén pode usar o módulo glob para obter unha lista de nomes de ficheiros e directorios (nomes de cartafol). glob permítelle especificar condicións usando comodíns (*), etc., e incluír subdirectorios de forma recursiva.
En Python 3.4 e posteriores, tamén é posible obter unha lista de ficheiros e directorios usando o módulo pathlib, que pode manipular camiños como obxectos. Do mesmo xeito que os globos anteriores, tamén se pode usar de forma condicional e recursiva.
Obter unha lista de nomes de ficheiros e directorios.
Se usa os.listdir() como está, devolverá unha lista de nomes de ficheiros e directorios.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
O que obtén é unha lista de cadeas de camiños.
Obtén só unha lista de nomes de ficheiros
Se quere obter unha lista de só nomes de ficheiros, use a función os.path.isfile() para determinar se o camiño é un ficheiro. pasar só o nome do ficheiro como argumento da función os.path.isfile() non funcionará, polo que pasa a ruta completa como se mostra a continuación.os.path.isfile(os.path.join(path, f))
files = os.listdir(path) files_file = [f for f in files if os.path.isfile(os.path.join(path, f))] print(files_file) # ['file1', 'file2.txt', 'file3.jpg']
Obtén só unha lista de nomes de directorio
Se só quere obter unha lista de nomes de directorios, use os.path.isdir() do mesmo xeito.
files = os.listdir(path) files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))] print(files_dir) # ['dir1', 'dir2']