Windows'ta bazı dosyalar için mim türü almam gerekiyor, bu yüzden python-magic
(32 bit python 2.7.3 üzerinde) yükledim.
Unix magic
kitaplığına bağlıdır.
Yazar, gnuwin32 projesinden regex2.dll
, zlib1.dll
ve magic1.dll
numaralarını almayı öğütler. Bu yüzden dosyaları bir klasöre kaydettim ve klasörü sistemime PATH
ekledim.
Şimdi ben dosya istisna eksik olsun, magic
yöntemleri çalıştırma zaman:Windows'taki "sihirli" kitaplığı için eksik dosyalar
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 i hata ayıklama denenmiş ve magic1.dll
doğru bulunduğu, ancak kütüphane bir istisna atar içinde bir yerlerde.
gnuwin32
paketinin içinde magic
ve magic.mgc
bulundu. Aynı klasöre yerleştirilir ve piton düz metindir dll gibi magic
dosyayı açmaya çalıştığı için bu besbelli olur
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)
üzerinde WindowsError: [Error 126]
aldık. Koddaki dosya isimlerine .dll
ekledikten sonra aynı magic.MagicException: could not find any magic files!
'u elde ediyorum.
Hangi dosyalarda eksiklerim?
GÜNCELLEME:
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
GÜNCELLEME 2 (ÇÖZÜLDÜ):
print(magic.Magic())
magic.MagicException: could not find any magic files!
print(magic.Magic(magic_file = 'magic'))
<magic.Magic instance at 0x02A5E198>
sadece açıkça
Aptal soru pip aracılığıyla piton-sihirli yükleyin PATH üzerinden erişilebilir olması için, size 'PATH' için DLL ekledik SONRA komut istemini yeniden ve komut dosyasını idam ÖNCE var? (aptalca soru, çünkü sen açıkça ctypes etrafında yolunu bildiğinizden) – Torxed
"DLL'leri PATH'a ekledikten sonra komut istemini yeniden başlattınız mı?" - evet, ben – user2052437
yaptım dll'leri aynı dizine yerleştirip denedim bunlarda? ya da bunun başlaması için yardımcı olabilir? DLL'leri gibi bir yerde arıyorlar mı bilmiyorum./'Sadece denemek için iyi olabilir mi? - Crap, sadece soruyu tekrar oku .. .. zaten yaptın .. (ben yoruldum, 00:00 AM burada) – Torxed