Failide ja kataloogide nimede (kaustade nimede) loetelu saamiseks Pythonis kasutage os-mooduli funktsiooni os.listdir().
os.listdir(path='.')
Tagastab nimekirja, mis sisaldab kirjete nimesid teekonnaga määratud kataloogis.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Os-moodul kuulub standardraamatukogusse ja seda ei ole vaja paigaldada. Kuid “import” on vajalik.
Siin on esitatud järgmine teave.
- Saada nimekiri nii failide kui ka kataloogide nimedest.
- Saada ainult failinimede nimekiri
- Saada ainult kataloogide nimede nimekiri
Järgnevalt on toodud näide faili (kataloogi) struktuuri kohta.
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
Lisaks os.listdir() funktsioonile saate kasutada ka glob moodulit, et saada failide ja kataloogide nimede (kaustade nimede) loetelu. glob võimaldab teil määrata tingimusi, kasutades metsikuid sümboleid (*) jne, ja lisada rekursiivselt alamkatalooge.
Python 3.4 ja uuemates versioonides on võimalik saada failide ja kataloogide loetelu ka pathlib-mooduli abil, mis suudab manipuleerida teekondi objektidena. Nagu globs eespool, saab seda kasutada ka tingimuslikult ja rekursiivselt.
Saada nimekiri nii failide kui ka kataloogide nimedest.
Kui te kasutate funktsiooni os.listdir() sellisena, siis tagastab see nii failide kui ka kataloogide nimede loendi.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Saate nimekirja teekonnajoontest.
Saada ainult failinimede nimekiri
Kui soovite saada nimekirja ainult failinimedest, kasutage funktsiooni os.path.isfile(), et teha kindlaks, kas tee on fail. os.path.isfile() funktsiooni argumendina ainult failinime edastamine ei toimi, seega edastage kogu tee, nagu allpool näidatud.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']
Saada ainult kataloogide nimede nimekiri
Kui soovite saada ainult kataloogide nimede nimekirja, kasutage samamoodi 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']