Windows上のいくつかのファイルのmimeタイプを取得する必要があるため、python-magic
(32ビットPython 2.7.3に)インストールしました。UNIXライブラリ
に依存します。作成者は、gnuwin32プロジェクトから取得するように
指示します。そこで、ファイルをフォルダーに保存し、そのフォルダーをシステムに追加しました。
これで、メソッドを実行すると、欠落しているファイルの例外が発生します。 magic
regex2.dll
zlib1.dll
magic1.dll
PATH
magic
import magic
print(magic.Magic())
Traceback (most recent call last):
File "C:/Users/Admin/PycharmProjects/lex/lex.py", line 367, in <module>
test_magic()
File "C:/Users/Admin/PycharmProjects/lex/lex.py", line 364, in test_magic
print(magic.Magic())
File "C:\Python27\lib\site-packages\python_magic-0.4.3-py2.7.egg\magic.py", line 52, in __init__
magic_load(self.cookie, magic_file)
File "C:\Python27\lib\site-packages\python_magic-0.4.3-py2.7.egg\magic.py", line 188, in magic_load
return _magic_load(cookie, coerce_filename(filename))
File "C:\Python27\lib\site-packages\python_magic-0.4.3-py2.7.egg\magic.py", line 139, in errorcheck
raise MagicException(err)
magic.MagicException: could not find any magic files!
DLLはPATHにあり、デバッグを試みmagic1.dll
て正しく配置されていますが、ライブラリ内のどこかで例外がスローされます。私が見つけ
たパッケージの中と。それらを同じフォルダに置いて、乗りました gnuwin32
magic
magic.mgc
WindowsError: [Error 126]
libmagic = None
# Let's try to find magic or magic1
dll = ctypes.util.find_library('magic') or ctypes.util.find_library('magic1')
# This is necessary because find_library returns None if it doesn't find the library
if dll:
libmagic = ctypes.CDLL(dll)
magic
これは明らかに、Pythonがファイルをプレーンテキストであるdllとして開こうとするために発生します。コード内のファイル名に追加.dll
した後、私は同じを取得しますmagic.MagicException: could not find any magic files!
。
どのファイルがありませんか?
アップデート:
C:\Users\Admin>file C:\123.zip -m magic
file: could not find any magic files!
C:\Users\Admin>file C:\123.zip -m "C:\@DEV\@LIB\@Magic\GetGnuWin32\bin\magic"
C:\123.zip; ASCII text, with no line terminators
C:\Users\Admin>cd C:\@DEV\@LIB\@Magic\GetGnuWin32\bin
C:\@DEV\@LIB\@Magic\GetGnuWin32\bin>file C:\123.zip -m magic
C:\123.zip; ASCII text, with no line terminators
更新2(解決済み):
print(magic.Magic())
magic.MagicException: could not find any magic files!
print(magic.Magic(magic_file = 'magic'))
<magic.Magic instance at 0x02A5E198>
ファイルを明示的に指定する必要がありました