Каб атрымаць спіс імёнаў файлаў і каталогаў (імёнаў тэчак) у Python, выкарыстоўвайце функцыю модуля os os.listdir().
os.listdir(path=’.’)
Вяртае спіс, які змяшчае назвы запісаў у каталогу, вызначаным шляхам.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation
Модуль os уключаны ў стандартную бібліятэку і не патрабуе ўстанаўлення. Аднак «імпарт» неабходны.
Тут прадстаўлена наступная інфармацыя.
- Атрымаць спіс імёнаў файлаў і каталогаў.
- Атрымаць спіс толькі імёнаў файлаў
- Атрымаць спіс толькі імёнаў каталогаў
Ніжэй прыведзены прыклад структуры файла (каталога).
. └── testdir ├── dir1 ├── dir2 ├── file1 ├── file2.txt └── file3.jpg
У дадатак да os.listdir(), вы таксама можаце выкарыстоўваць модуль glob, каб атрымаць спіс назваў файлаў і каталогаў (імёнаў тэчак). glob дазваляе задаваць умовы, выкарыстоўваючы падстановкі (*) і г.д., і рэкурсіўна ўключаць падкаталогі.
У Python 3.4 і пазнейшых версіях таксама можна атрымаць спіс файлаў і каталогаў з дапамогай модуля pathlib, які можа маніпуляваць шляхамі як аб’ектамі. Як і шары вышэй, ён таксама можа выкарыстоўвацца ўмоўна і рэкурсіўна.
Атрымаць спіс імёнаў файлаў і каталогаў.
Калі вы выкарыстоўваеце os.listdir() як ёсць, ён верне спіс як файлаў, так і імёнаў каталогаў.
import os path = "./testdir" files = os.listdir(path) print(type(files)) # <class 'list'> print(files) # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']
Вы атрымліваеце спіс радкоў шляху.
Атрымаць спіс толькі імёнаў файлаў
Калі вы хочаце атрымаць спіс толькі імёнаў файлаў, выкарыстоўвайце функцыю os.path.isfile(), каб вызначыць, ці з’яўляецца шлях файлам. перадача толькі імя файла ў якасці аргумента функцыі os.path.isfile() не будзе працаваць, таму перадайце поўны шлях, як паказана ніжэй.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']
Атрымаць спіс толькі імёнаў каталогаў
Калі вы хочаце атрымаць толькі спіс імёнаў каталогаў, выкарыстоўвайце 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']