4


0

ファイルにプレーンテキストが含まれているかどうかを確認する方法

ファイルでいっぱいのフォルダーがあり、その中の文字列を検索したいです。 問題は、一部のファイルがzip、exe、oggなどである可能性があることです。 何のファイルなのかを何とか確認して、txt、PHPなどだけを開いて検索することはできますか? ファイル ファイル拡張子に頼ることはできません。

4 Answer


5


Pythonの `mimetypes`ライブラリを使用します。

import mimetypes
if mimetypes.guess_type('full path to document here')[0] == 'text/plain':
    # file is plaintext


4


Python interfaceからhttp://linux.die.net/man/3/libmagic[libmagic]を使用して、ファイル形式を識別できます。

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

その他の例については、https://github.com/ahupp/python-magic [repo]をご覧ください。


1


このようなことを試してください:

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('')

これは、ファイルがバイナリタイプの場合はTrueを返し、テキストの場合はFalseを返します。これをニーズに合わせて簡単に変換できるはずです、fx。 関数「is_text_file」を作成します-それはあなたにお任せします


0


Linuxを使用している場合は、 `file`コマンドラインツールの出力を解析できます。