Функция os. listdir

funkciya os listdir Инструменты для работы с файлами и каталогами

Функция listdir из модуля os является еще одним способом получить список имен файлов. Но она принимает не шаблон имени файла, а простую строку с именем каталога и возвращает список, содержащий имена всех файлов в каталоге — как просто файлов, так и вложенных подкаталогов, — для использования в вызывающем сценарии:

>>> import os

>>> os.listdir(‘.’)

[‘parts’, ‘PP3E’, ‘random.bin’, ‘spam.txt’, ‘temp.bin’, ‘temp.txt’]

>>> 

>>> os.listdir(os.curdir)

[‘parts’, ‘PP3E’, ‘random.bin’, ‘spam.txt’, ‘temp.bin’, ‘temp.txt’]

>>> 

>>> os.listdir(‘parts’)

[‘part0001’, ‘part0002’, ‘part0003’, ‘part0004’]

Эта функция также не привлекает к работе команды оболочки, и поэтому данный способ является не только быстрым, но и переносимым на все основные платформы Python. Результат функции не упорядочен никаким образом (но может быть отсортирован методом списков sort или функцией sorted); возвращает базовые имена файлов без путей к каталогам; не включает имена каталогов «.» или «..» и содержит имена файлов и подкаталогов для данного уровня.

Чтобы сравнить все три способа, запустим их друг за другом для явно заданного каталога. Они отличаются некоторыми деталями, но в целом являются вариациями на одну и ту же тему: функция os.popen возвращает символы конца строки и способна сортировать имена файлов на некоторых платформах, функция glob.glob принимает шаблоны и возвращает полные имена файлов с путями, а функция os.listdir принимает обычное имя каталога и возвращает имена файлов без путей к каталогам:

>>> os.popen(‘dir /b parts’).readlines()

[‘part0001\n’, ‘part0002\n’, ‘part0003\n’, ‘part0004\n’]

>>> glob.glob(r’parts\*’)

[‘parts\\part0001’, ‘parts\\part0002’, ‘parts\\part0003’, ‘parts\\part0004’]

>>> os.listdir(‘parts’)

[‘part0001’, ‘part0002’, ‘part0003’, ‘part0004’]

Из этих трех способов лучшими вариантами являются функции glob и listdir, если важна переносимость сценария и единообразие результатов, при этом функция listdir в последних версиях Python выглядит самой быстрой (тем не менее советую замеры производительности произвести самостоятельно — реализация может со временем измениться).

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий