GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

ahupp

python-magic – libmagic用のPythonラッパー

投稿日:

libmagic用のPythonラッパー

パイソンマジック

python-magicは、libmagicファイルタイプ識別ライブラリへのPythonインタフェースです。 libmagicは、あらかじめ定義されたファイルタイプのリストに従ってヘッダーをチェックすることによって、ファイルタイプを識別します。 この機能は、Unixコマンドfileによってコマンドラインに公開されていfile

使用法

>>> import magic
>>> magic.from_file("testdata/test.pdf")
'PDF document, version 1.2'
>>> magic.from_buffer(open("testdata/test.pdf").read(1024))
'PDF document, version 1.2'
>>> magic.from_file("testdata/test.pdf", mime=True)
'application/pdf'

マジックデータベースファイルのオーバーライドや文字エンコーディング検出の有効化など、より直接的な制御を可能にするMagicクラスもあります。 これは一般的な使用にはお勧めできません。 特に、複数のスレッド間で共有することは安全ではなく、これが試行された場合には失敗します。

>>> f = magic.Magic(uncompress=True)
>>> f.from_file('testdata/test.gz')
'ASCII text (gzip compressed data, was "test", last modified: Sat Jun 28
21:32:52 2008, from Unix)'

フラグオプションを組み合わせることもできます:

>>> f = magic.Magic(mime=True, uncompress=True)
>>> f.from_file('testdata/test.gz')
'text/plain'

バージョン管理

マイナーバージョンのバンプは、後方互換性があります。 大きなバンプはありません。

名前の競合

悲しいことに、モジュール名のmagicを使うライブラリが2つあります。 どちらもかなり長い間使用されています。このモジュールを使用していてopenなどのメソッドを使用してエラーが発生した場合、あなたのコードはもう一方のコードを期待しています。 ある日、これらが和解されることを願っています。

インストール

python-magicの現在の安定版はpypiで利用可能で、 pip install python-magic実行することでインストールできます。

その他の情報源:

Windows

libmagic用のDLLが必要です。 @ julian-rは、pypiにバイナリを含むこのプロジェクトのバージョンをアップロードしました: https ://pypi.python.org/pypi/python-magic-bin/0.4.14

これまでのライブラリの他のソースは、 File for Windowsでした。 [binary-zip]\share\miscからファイルmagicをコピーし、その場所をMagic(magic_file=...)渡す必要があります。

64ビットのPythonビルドを使用している場合、64ビットのlibmagicバイナリが必要です( https://github.com/pidydx/libmagicwin64) 新しいバージョンはhttps://github.com/nscaife/file-windowsにあります

OSX

  • Homebrewを使用する場合: brew install libmagic
  • macportsを使用する場合: port install file

トラブルシューティング

  • ‘MagicException:マジックファイルが見つかりませんでした!’:libmagicのいくつかのインストールでは、マジックデータベースファイルを正しく指していません。 コンストラクタで明示的にファイルへのパスを指定してみてください: magic.Magic(magic_file="path_to_magic_file")

  • ‘WindowsError:[エラー193]%1は有効なWin32アプリケーションではありません’:32ビットのlibmagic DLLをPythonの64ビットビルドで実行しようとすると、このエラーで失敗します。 以下は、Windows用のlibmagicの64ビットビルドです: https : //github.com/pidydx/libmagicwin64

  • ‘WindowsError:exception:access violation write 0x00000000’これはWindows PythonとCygwin Pythonが混在していることを示している可能性があります。 libmagicとpythonのビルドが一貫していることを確認してください。

著者

2001年にAdam Huppによって書かれた、地面から離れたことのないプロジェクト。 もともとはCライブラリのバインディングにSWIGを使用していましたが、これはPythonの標準ライブラリの一部であったctypesに切り替えました。

私のウェブサイトgithubを通じて私に連絡することができます。

貢献者

機能とバグ修正を提出したgithubのこれらの人々に感謝します。

ライセンス

python-magicはMITライセンスの下で配布されています。 詳細については、付属のLICENSEファイルを参照してください。

私はリポジトリにオープンソースライセンスの下でコードを提供しています。 これは私の個人的なリポジトリなので、あなたが私のコードに与えるライセンスは私のものであり、私の雇用者ではありません(Facebook)







-ahupp
-

執筆者: