3

libmagic のラッパー クラスである python-magic パッケージを使用しようとしています。

「pip install python-magic」を使用してインストールしますが、テストすると:

import magic
ms = magic.open(magic.MAGIC_NONE)
ms.load()

モジュールのオブジェクトに属性「オープン」がないことを示しています。Google で検索したところ、原因の 1 つは __init__.py ファイルがないことだと誰かが言いました。だから私は個人的なサイトパッケージディレクトリをチェックしました。私は、magic.py、magic.pyc、およびフォルダー python_magic-0.4.3-py2.7.egg-info を見つけました。これらには、いくつかのテキスト ファイルが含まれています。

__init__.py ファイルを取得するにはどうすればよいですか? インストールされている他のパッケージを確認しましたが、その中にはそのようなファイルが含まれているものもあります。

ありがとう。

4

1 に答える 1

5

機能はありません magic.open()python-magicドキュメントをチェックアウトするmagic.from_file()と、それが機能していることがわかりmagic.from_buffer()ます。

magic.from_file()パス名に対してテストするために使用します。モジュールはそのファイルを開き、タイプを決定します。magic.from_buffer()バイト シーケンスをテストするために使用します ( strPython 2 ではbytes、Python 3 では)。

magic.Magic()動作方法を変更するために (スレッドごとに!) インスタンス化できるクラスもあります。

Magic(mime=False, magic_file=None, mime_encoding=False)

次のように文書化されています。

新しいlibmagicラッパーを作成します。

mime-Trueテキストの説明の代わりに MIME タイプが返さ
mime_encodingれる場合 -Trueコーデックが返される場合
magic_file- システムのデフォルト以外の MIME データベースを使用する

によると、READMEパブリックAPI に関する限り、これ すべてです。

Magicクラスはmagic.MAGIC_NONE内部的に処理します。インスタンスmime=Trueの作成時に設定すると、たとえばフラグが設定されます。magic.Magic()magic.MAGIC_MIME

あなたが遭遇したコードは、より多くの内部処理を必要とする別のPythonmagicライブラリを完全にカバーしているように見えます。私のアドバイス: それを再現しようとしないでください。この新しいライブラリを使用してください。APIのみが文書化されています。

于 2013-08-14T10:10:48.713 に答える