Ak chcete získať zoznam názvov súborov a adresárov (názvov priečinkov) v jazyku Python, použite funkciu modulu os os.listdir().
os.listdir(path='.')
Vráti zoznam obsahujúci názvy položiek v adresári zadanom pomocou path.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Modul os je súčasťou štandardnej knižnice a nie je potrebné ho inštalovať. Vyžaduje sa však „import“.
Tu sú uvedené tieto informácie.
- Získanie zoznamu názvov súborov aj adresárov.
- Získať iba zoznam názvov súborov
- Získať len zoznam názvov adresárov
Nasleduje príklad štruktúry súborov (adresárov).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Okrem modulu os.listdir() môžete na získanie zoznamu názvov súborov a adresárov (názvov priečinkov) použiť aj modul glob. glob umožňuje špecifikovať podmienky pomocou zástupných znakov (*) atď. a rekurzívne zahrnúť podadresáre.
V jazyku Python 3.4 a novších verziách je tiež možné získať zoznam súborov a adresárov pomocou modulu pathlib, ktorý dokáže pracovať s cestami ako s objektmi. Podobne ako vyššie uvedené globs, aj tento modul možno použiť podmienečne a rekurzívne.
Získanie zoznamu názvov súborov aj adresárov.
Ak použijete funkciu os.listdir(), vráti zoznam názvov súborov aj adresárov.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Získate zoznam reťazcov ciest.
Získať iba zoznam názvov súborov
Ak chcete získať len zoznam názvov súborov, použite funkciu os.path.isfile() na určenie, či je cesta súborom. odovzdanie len názvu súboru ako argumentu funkcie os.path.isfile() nebude fungovať, preto odovzdajte celú cestu, ako je uvedené nižšie.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']
Získať len zoznam názvov adresárov
Ak chcete získať len zoznam názvov adresárov, použite rovnakým spôsobom os.path.isdir().
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']