Мне нужно иметь дело с большим количеством файлов. Как я могу различить, какой из них является файлом PDF, а какой нет? Я запускаю Python в Windows. Спасибо за помощь, пожалуйста.Как отличить PDF-файл от других файлов?
ответ
Если вы хотят полагаться на расширение файла, вы можете использовать следующий код:
#!python3
import os
def isPDFfile(fname):
name, ext = os.path.splitext(fname)
return ext.lower() == '.pdf'
if __name__ == '__main__':
for fname in os.listdir('.'):
if isPDFfile(fname):
print(fname, 'is PDF file.')
else:
print(fname, 'is not PDF file.')
Если вы хотите быть уверены, что имя не является каталогом, вы можете добавить тест:
def isPDFfile(fname):
if not os.path.isfile(fname):
return False
name, ext = os.path.splitext(fname)
return ext.lower() == '.pdf'
Существует также функция os.walk()
, которая выполняет итерацию через файлы в каталоге. Если вы хотите, чтобы найти все PDF-файлы внутри каталога, вы можете написать свой собственный специализированный гуляем, который будет возвращать только PDF файлы:
def walkPDFfiles(directory):
for dirpath, dirs, files in os.walk(directory):
for fname in files:
name, ext = os.path.splitext(fname)
if ext.lower() == '.pdf':
yield os.path.join(dirpath, fname)
И вы можете использовать его в петле, как что:
for fname in walkPDFfiles('.'):
print(fname, 'is PDF file.')
Что делать, если вопрос был о файлах .exe? –
@begueradj: при поиске файлов с другим расширением код должен быть изменен. Расширение (ы) можно было бы передать через аргумент, если захотите. – pepr
, если вы не доверяете расширение имени файла, вы можете прочитать первые несколько байт файла и тест, если он начинается с %PDF-
Как так:
with open(fn, 'rb') as fin:
line=fin.read(20)
if line.startswith('%PDF-'):
# its a pdf file...
# you can parse the version of PDF by the versioning x.x after %PDF-x.x
else:
# it is not a pdf file
- 1. Как я могу отличить смартфоны от других?
- 2. Как отличить данные от CSV-файлов
- 3. Как отличить дескриптор дескриптора Win32 от других ручек труб?
- 4. Как отличить Android от других операционных систем Linux в Python?
- 5. Как отличить обычные символы пробела от других символов пробела
- 6. Как отличить результат Uri от других видов деятельности
- 7. Как отличить iframe Youtube от других фреймов на веб-странице?
- 8. Как отличить 0 от других целых чисел при инициализации nullptr_t?
- 9. Как отличить среду пространства имен пакетов от других объектов среды
- 10. Как отличить дубликаты файлов cookie?
- 11. Как отличить архивные файлы от обычных файлов через .NET framework
- 12. В javascript есть ли способ отличить буквы от других персонажей?
- 13. Mixpanel - Есть ли способ отличить впервые посетителей от других?
- 14. Как отличить программу жмет от
- 15. Как отличить метод от функции?
- 16. Как отличить класс от функции
- 17. Как отличить объект от linq
- 18. Как отличить итератор от итерации?
- 19. Как отличить домен от поддомена
- 20. Как отличить кран от перетаскивания
- 21. Как отличить каталог от файла
- 22. Как отличить QChar от int
- 23. Как отличить WebControl от GridViewRow
- 24. Как отличить ByteArray от строк
- 25. Как отличить драйвер Windows от dll
- 26. Как отличить вывод массива от не-массива
- 27. Как отличить FileFilter и FilenameFilter от Groovy?
- 28. Как отличить один музыкальный файл от другого
- 29. Невозможно отличить от android.graphics.drawable.ColorDrawable
- 30. Opencv - Как отличить дрожание от панорамирования?
Если вы не можете доверять имени файла и хотите проверить содержимое, см. Http://stackoverflow.com/q/10937350/ –