Атрымаць спіс назваў файлаў і каталогаў у Python.

Бізнэс

Каб атрымаць спіс імёнаў файлаў і каталогаў (імёнаў тэчак) у 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']
Copied title and URL