python получить файл расширения: splitext vs endswith
Мне интересно, как лучше использовать эти два, чтобы получить расширение файла, и проверить, принадлежит ли это списку.
name, ext = os.path.splitext(filename) return ext == ".pdf" # an example
или
return filename.endswith(".pdf")
- ValueError: требуется больше 1 значения для распаковки python
- * код python * проблема / s с .txt файлом и кортежи + словари
- Python – добавить в список dicts при сохранении порядка
- Когда я создаю ярлык на Диске, у него есть mimetype 'application / octet-stream', хотя я указываю '' application / vnd.google-apps.drive-sdk ''
- нет модуля cpickle
Вот два примера проверки с обоими методами, если имя файла содержит любое из расширений.
ext = ('.txt', '.py', '.docx', '.pdf') # tuple of extensions. filenames = [ ... ] # list of filename strings ends_matches = [ f for f in filenames if f.endswith(ext) ] # change ext to set for slightly better efficiency. split_matches = [ f for f in filenames if f.splitext()[1] in ext ] # may need to include .lower() for cases with capital extensions.
В этом случае это действительно зависит от вас, который вы хотите использовать. Если вы просто хотите проверить одно расширение файла, я бы предложил с последним, endswith
.
return filename.endswith(extension)
Во-вторых, это более чистое и более короткое решение, которое я бы сказал, если вам нужно только проверить конкретное расширение. Оба работают даже в особых случаях, таких как filename = abc.def.pdf
.
Сначала лучше, если вам нужно обработать некоторое имя файла и / или расширение позже.
endswith()
обычно используется для проверки имен файлов. Питонический подход для фильтрации определенных расширений файлов в списке имен файлов может быть выполнен следующим образом:
>>> extensions = ('.pdf', '.txt', '.rtf') >>> [file_name for file_name in files if file_name.lower().endswith(extensions)] # Output -> File names that end with any of those extensions.
При таком подходе вы можете предоставить множество расширений файлов в кортеже и, возможно, устранить лестницу if/else
( чистый код: D ).
- Python ConfigParser.NoSectionError: Нет раздела:
- не удалось использовать TfidfVectorizer в Google приложении
- Использование Tor + Privoxy для очистки результатов покупок Google: как избежать блокировки?
- Преобразовать первый столбец в целые числа, переместить в поплавки
- Python: как скрыть ввод
- Как изменить файлы программ в Python?
- Можете ли вы аннотировать возвращаемый тип, когда значение является экземпляром cls?
- Socket не работает в Python
- python – ограничение размера заданного типа данных