2015-04-16 4 views
-2

Учитывая папку, как определить, содержит ли она какие-либо файлы указанного расширения? Мне не нужны имена файлов или сколько файлов содержит это расширение; Мне просто нужно определить, присутствует ли файл с расширением.Как узнать, содержит ли папка файл с определенным расширением?

+0

«слишком широкий» ... Может ли кто-нибудь объяснить, что мне нужно, более конкретно? Пять downvotes, а не один комментарий, объясняющий, как улучшить то, что вы видите в качестве причины для downvote. «Есть слишком много возможных ответов ...» Как? Я совершенно конкретна в том, что мне нужно. «Хорошие ответы были бы слишком длинными для этого формата ...» Нет, два одного лайнера в течение нескольких минут после запроса вопроса. «Пожалуйста, добавьте детали, чтобы сузить набор ответов или изолировать проблему, на которую можно ответить в нескольких параграфах». Не кажется необходимым, поскольку люди дали приемлемые ответы. – DenaliHardtail

+0

Я нашел этот вопрос конкретным и ответственным, о чем свидетельствуют два ответа, которые не требуют никаких догадок или просьб о разъяснении. – TigerhawkT3

ответ

5

Используйте функцию any, чтобы проверить, завершена ли какая-либо строка файла нужной строкой расширения.

any(i.endswith(extension) for i in os.listdir(directory)) 
2

Этот простой один лайнер сделает это:

any(ext == os.path.splitext(name)[1] for name in os.listdir(path)) 

Предполагая path путь реж и ext является строка расширения.

+0

Это единственный правильный способ (до сих пор). +1 – vaultah

+0

Используется эквивалент 'if name == True: return True'. Вместо «Истина для имени в iterable if condition» вы можете просто «условие для имени в iterable». – TigerhawkT3

+0

@ TigerhawkT3 Справедливая точка. Отредактировано для упрощения. Я забыл, что «любые» короткие замыкания, поскольку он лениво оценивается для входного генератора. – aruisdante

Смежные вопросы