A Pythonban a fájl- és könyvtárnevek (mappanevek) listájának lekérdezéséhez használja az os modul os.listdir() függvényét.
os.listdir(path='.')
Visszaad egy listát, amely a path által megadott könyvtárban található bejegyzések neveit tartalmazza.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Az os modul benne van a szabványos könyvtárban, és nem kell telepíteni. Az “import” azonban szükséges.
A következő információk itt találhatók.
- A fájl- és könyvtárnevek listájának lekérdezése.
- Csak a fájlnevek listájának lekérdezése
- Csak a könyvtárnevek listájának lekérdezése
A következő egy példa egy fájl (könyvtár) szerkezetére.
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Az os.listdir() mellett a glob modult is használhatja a fájl- és könyvtárnevek (mappanevek) listájának lekérdezésére.A glob lehetővé teszi a feltételek megadását a jokerek (*) stb. használatával, valamint az alkönyvtárak rekurzív bevonását.
A Python 3.4 és újabb verziókban lehetőség van fájlok és könyvtárak listájának lekérdezésére is a pathlib modul segítségével, amely objektumként tudja kezelni az elérési utakat. A fenti globs-hoz hasonlóan ez is használható feltételesen és rekurzívan.
A fájl- és könyvtárnevek listájának lekérdezése.
Ha az os.listdir() parancsot használjuk, akkor az a fájl- és könyvtárnevek listáját adja vissza.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Egy listát kapunk az elérési útvonalakról.
Csak a fájlnevek listájának lekérdezése
Ha csak fájlnevek listáját szeretné megkapni, használja az os.path.isfile() függvényt annak megállapítására, hogy az útvonal egy fájl-e. Ha csak a fájlnevet adja meg az os.path.isfile() függvény argumentumaként, az nem fog működni, ezért adja meg a teljes útvonalat az alábbiak szerint.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']
Csak a könyvtárnevek listájának lekérdezése
Ha csak a könyvtárnevek listáját szeretné megkapni, használja az os.path.isdir() parancsot ugyanígy.
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']