Как получить список всех файлов (и каталогов) в данном каталоге в Python?
572
Как получить список всех файлов (и каталогов) в данном каталоге в Python?
Это способ обойти каждый файл и каталог в дереве каталогов:
import os
for dirname, dirnames, filenames in os.walk('.'):
# print path to all subdirectories first.
for subdirname in dirnames:
print(os.path.join(dirname, subdirname))
# print path to all filenames.
for filename in filenames:
print(os.path.join(dirname, filename))
# Advanced usage:
# editing the 'dirnames' list will stop os.walk() from recursing into there.
if '.git' in dirnames:
# don't go into any .git directories.
dirnames.remove('.git')
for subdirname in dirnames: if subdirname != '.git'
Ты можешь использовать
Для справки и других функций ОС смотрите здесь:
источник
os.scandir
вместо этого, поскольку во многих случаях это позволяет предотвращать системные вызовы, обеспечивая бесплатное ускорение (как IPC, так и IO работают медленно).os.path.isdir
.Вот вспомогательная функция, которую я использую довольно часто:
источник
источник
r'C:\temp'
является более ясным и предпочтительным, чем"C:\\temp"
Rawstrings предпочтительнее, чем выходящие обратные слеши.Если вам нужны способности к сбору, для этого также есть модуль. Например:
вернет что-то вроде:
Смотрите документацию здесь .
источник
Попробуй это:
источник
Для файлов в текущем рабочем каталоге без указания пути
Python 2.7:
Python 3.x:
Спасибо Стаму Кали за комментарий к python 3.x
источник
os.listdir()
перечисляет элементы в текущем каталоге по умолчанию! Так что не надоos.getcwd()
:)Рекурсивная реализация
источник
Я написал длинную версию со всеми необходимыми опциями: http://sam.nipl.net/code/python/find.py
Я думаю, что это будет соответствовать и здесь:
источник
Вот еще один вариант.
Он возвращает итератор объектов os.DirEntry, соответствующих записям (вместе с информацией об атрибутах файла) в каталоге, заданном путем.
Пример:
Использование scandir () вместо listdir () может значительно повысить производительность кода, который также требует информацию о типе файла или атрибуте файла , поскольку объекты os.DirEntry предоставляют эту информацию, если операционная система предоставляет ее при сканировании каталога. Все методы os.DirEntry могут выполнять системный вызов, но для is_dir () и is_file () обычно требуется только системный вызов для символических ссылок; os.DirEntry.stat () всегда требует системного вызова в Unix, но требует только одного для символических ссылок в Windows.
Python Docs
источник
Хотя
os.listdir()
это хорошо для создания списка имен файлов и каталогов, часто вы хотите делать больше, когда у вас есть эти имена - а в Python3 pathlib упрощает эти другие задачи . Давайте посмотрим, понравится ли вам это так же, как и мне.Чтобы вывести содержимое каталога, создайте объект Path и возьмите итератор:
Если мы хотим просто список имен вещей:
Если вы хотите только dirs:
Если вам нужны имена всех файлов conf в этом дереве:
Если вы хотите список conf файлов в дереве> = 1K:
Разрешить относительные пути легко:
Навигация с помощью Path довольно понятна (хотя и неожиданна):
источник
Хороший лайнер, чтобы перечислять только файлы рекурсивно. Я использовал это в моей директиве setup.py package_data:
Я знаю, что это не ответ на вопрос, но может пригодиться
источник
Для Python 2
Для Python 3
Для фильтра и карты вам нужно обернуть их списком ()
В настоящее время рекомендуется заменить использование карты и фильтра выражениями генераторов или списками:
источник
Вот однострочная версия Pythonic:
В этом коде указывается полный путь ко всем файлам и каталогам в указанном имени каталога.
источник
Я знаю, что это старый вопрос. Это аккуратный способ, с которым я столкнулся, если вы работаете на машине liunx.
источник
источник
FYI Добавить фильтр расширения или расширения файла импорта ОС
источник
Если бы я понял, я бы добавил это. Простой и грязный способ поиска по шаблону.
источник
Ниже приведен список каталогов и файлов в каталоге
источник
Тот, который работал со мной, является своего рода измененной версией ответа Салеха выше.
Код выглядит следующим образом:
"dir = 'заданное_каталог_имя' filenames = [os.path.abspath (os.path.join (dir, i)) для i в os.listdir (dir)]"
источник