Fehlende Dateien für die `magic` Bibliothek unter Windows
Ich brauche MIME-Typ für einige Dateien unter Windows, also habe ich installiertpython-magic
(auf 32-Bit-Python 2.7.3).
Es hängt von Unix abmagic
Bibliothek.
Autor beauftragt zu bekommenregex2.dll
, zlib1.dll
undmagic1.dll
von gnuwin32 project. Also habe ich die Dateien in einem Ordner gespeichert und den Ordner meinem System hinzugefügtPATH
.
Jetzt wenn ich ausführemagic
Methoden bekomme ich fehlende Datei Ausnahme:
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!
DLLs sind im PATH, ich habe versucht zu debuggen undmagic1.dll
befindet sich korrekt, aber irgendwo in der Bibliothek wird eine Ausnahme ausgelöst.
In dergnuwin32
Paket, das ich gefunden habemagic
undmagic.mgc
. Ich legte sie in den gleichen Ordner und bekamWindowsError: [Error 126]
auf
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)
Dies geschieht offensichtlich, weil Python versucht, sich zu öffnenmagic
Datei als DLL, die Klartext ist. Nach dem Hinzufügen.dll
Ich bekomme die gleichen Dateinamen im Codemagic.MagicException: could not find any magic files!
.
Welche Dateien fehlen mir?
AKTUALISIEREN:
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
UPDATE 2 (Gelöst):
print(magic.Magic())
magic.MagicException: could not find any magic files!
print(magic.Magic(magic_file = 'magic'))
<magic.Magic instance at 0x02A5E198>
musste nur die Datei explizit angeben