Как проверить, содержит ли файл простой текст? - PullRequest
4 голосов
/ 18 марта 2010

У меня есть папка с файлами, и я хочу найти в них строку. Проблема в том, что некоторые файлы могут быть zip, exe, ogg и т. Д. Можно ли как-то проверить, что это за файл, чтобы я открывал и просматривал только файлы txt, PHP и т. Д. Я не могу полагаться на расширение файла.

Ответы [ 4 ]

6 голосов
/ 18 марта 2010

Использовать библиотеку Python mimetypes:

import mimetypes
if mimetypes.guess_type('full path to document here')[0] == 'text/plain':
    # file is plaintext
4 голосов
/ 18 марта 2010

Вы можете использовать интерфейс Python до libmagic для определения форматов файлов.

>>> import magic
>>> f = magic.Magic(mime=True)
>>> f.from_file('testdata/test.txt')
'text/plain'

Дополнительные примеры см. В репо .

1 голос
/ 28 декабря 2016

попробуйте что-то вроде этого:

def is_binay_file(filepathname):
    textchars = bytearray([7,8,9,10,12,13,27]) + bytearray(range(0x20, 0x7f)) + bytearray(range(0x80, 0x100))
    is_binary_string = lambda bytes: bool(bytes.translate(None, textchars))

    if is_binary_string(open(filepathname, 'rb').read(1024)):
       return True
    else:
       return False

используйте метод, подобный этому:

is_binay_file('<your file path name>')

Это вернет True, если файл имеет двоичный тип, и False, если это текст - должно быть легко преобразовать это, чтобы отразить ваши потребности, например сделать функцию is_text_file - я оставляю это на ваше усмотрение

0 голосов
/ 18 марта 2010

Если вы работаете в Linux, вы можете проанализировать вывод инструмента командной строки file.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...