Da biste dobili popis naziva datoteka i direktorija (naziva mapa) u Pythonu, koristite funkciju os modula os.listdir().
os.listdir(path=’.’)
Vraća popis koji sadrži nazive unosa u direktoriju navedenom stazom.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
OS modul je uključen u standardnu biblioteku i ne treba ga instalirati. Međutim, potreban je “uvoz”.
Ovdje su navedene sljedeće informacije.
- Dobijte popis imena datoteka i imenika.
- Dobijte samo popis naziva datoteka
- Dobijte samo popis imena imenika
Slijedi primjer strukture datoteke (direktorija).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Osim os.listdir(), također možete koristiti glob modul za dobivanje popisa naziva datoteka i direktorija (naziva mapa). glob vam omogućuje da odredite uvjete pomoću zamjenskih znakova (*) itd., i rekurzivno uključite poddirektorije.
U Pythonu 3.4 i novijim verzijama također je moguće dobiti popis datoteka i direktorija pomoću modula pathlib, koji može manipulirati stazama kao objektima. Poput globusa iznad, također se može koristiti uvjetno i rekurzivno.
Dobijte popis imena datoteka i imenika.
Ako koristite os.listdir() kakav jest, vratit će popis imena datoteka i direktorija.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Ono što dobijete je popis nizova putanja.
Dobijte samo popis naziva datoteka
Ako želite dobiti popis samo naziva datoteka, upotrijebite funkciju os.path.isfile() da odredite je li put datoteka. prosljeđivanje samo naziva datoteke kao argumenta funkcije os.path.isfile() neće raditi, stoga proslijedite cijeli put kao što je prikazano u nastavku.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 popis imena imenika
Ako želite dobiti samo popis imena direktorija, 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']