Da biste dobili listu imena datoteka i direktorijuma (imena fascikli) u Python-u, koristite funkciju os modula os.listdir().
os.listdir(path=’.’)
Vraća listu koja sadrži imena unosa u direktorijumu navedenom putem putanje.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
OS modul je uključen u standardnu biblioteku i ne mora se instalirati. Međutim, „uvoz“ je obavezan.
Ovde se nalaze sledeće informacije.
- Dobijte listu imena datoteka i direktorijuma.
- Dobijte samo listu imena datoteka
- Dobijte samo listu imena direktorijuma
Sledi primer strukture datoteke (direktorijuma).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Pored os.listdir(), možete koristiti i glob modul da dobijete listu imena datoteka i direktorijuma (imena fascikli). glob vam omogućava da navedete uslove koristeći džoker znakove (*), itd., i rekurzivno uključite poddirektorijume.
U Python-u 3.4 i novijim verzijama, takođe je moguće dobiti listu datoteka i direktorijuma pomoću modula pathlib, koji može da manipuliše putanjama kao objektima. Kao i globovi iznad, može se koristiti uslovno i rekurzivno.
Dobijte listu imena datoteka i direktorijuma.
Ako koristite os.listdir() kakav jeste, vratiće listu imena datoteka i direktorijuma.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Ono što dobijate je lista nizova putanja.
Dobijte samo listu imena datoteka
Ako želite da dobijete listu samo imena datoteka, koristite funkciju os.path.isfile() da biste utvrdili da li je putanja datoteka. prosleđivanje samo imena datoteke kao argumenta funkcije os.path.isfile() neće raditi, pa prosledite punu putanju kao što je prikazano ispod.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']
Dobijte samo listu imena direktorijuma
Ako želite da dobijete samo listu imena direktorijuma, koristite os.path.isdir() na isti način.
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']