Как узнать файл из каталога в Python? - PullRequest
8 голосов
/ 01 марта 2009

При использовании метода os.listdir мне нужно указать, какой элемент в результирующем списке является каталогом или просто файлом.

Я столкнулся с проблемой, когда мне пришлось просмотреть все каталоги в этом списке, а затем добавить файл в каждый каталог.

Есть ли способ просмотреть этот список и удалить из него все файлы? Если это невозможно сделать с os.listdir, какой метод я должен использовать вместо этого?

Спасибо.

Ответы [ 3 ]

18 голосов
/ 01 марта 2009

Используйте os.path.isdir для фильтрации каталогов. Возможно что-то вроде

dirs = filter(os.path.isdir, os.listdir('/path'))
for dir in dirs:
    # add your file
7 голосов
/ 01 марта 2009

Это может быть быстрее:

current, dirs, files = os.walk('/path').next()

Список каталогов будет находиться в переменной dirs.

2 голосов
/ 01 марта 2009

dirs = filter (os.path.isdir, os.listdir ('/ path'))

Обратите внимание, что это не будет работать, если '/ path' не является текущим рабочим каталогом. os.listdir () возвращает листовые имена, поэтому вы будете спрашивать «os.path.isdir ('file.txt')», а если текущий каталог находится в другом месте, вы будете искать неправильный «file.txt».

os.path.join () должен использоваться на выходе os.listdir () для получения полного имени файла.

children= [os.path.join('/path', child) for child in os.listdir('/path')]
directories= filter(os.path.isdir, children)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...