पर 'जादू` लाइब्रेरी के लिए गुम फाइलें मुझे विंडोज़ पर कुछ फाइलों के लिए माइम प्रकार प्राप्त करने की आवश्यकता है, इसलिए मैंने python-magic
(32-बिट पायथन 2.7.3 पर) स्थापित किया है।
यह यूनिक्स magic
लाइब्रेरी पर निर्भर करता है।
लेखक gnuwin32 प्रोजेक्ट से 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!
DLLs पथ में, मैं डिबगिंग की कोशिश की और magic1.dll
सही ढंग से स्थित है रहे हैं, लेकिन कहीं न कहीं अंदर पुस्तकालय एक अपवाद फेंकता है।
gnuwin32
पैकेज के अंदर मुझे magic
और magic.mgc
मिला है। मैं उन्हें उसी फ़ोल्डर में रखा गया है, और
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)
यह स्पष्ट रूप से होता है क्योंकि अजगर dll, जो सादे पाठ के रूप में magic
फ़ाइल को खोलने की कोशिश करता है पर WindowsError: [Error 126]
मिला है। कोड में फ़ाइल नामों के लिए .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>
सिर्फ़ स्पष्ट
बेवकूफ सवाल स्थापित पिप के माध्यम से अजगर-जादू के माध्यम से सुलभ हो सकता है, के बाद आप 'PATH' को DLL का जोड़ दिया है आप कमांड प्रॉम्प्ट को पुनः आरंभ और इससे पहले कि आप स्क्रिप्ट निष्पादित है? (बेवकूफ सवाल, क्योंकि आप स्पष्ट रूप से सीटीपीएस के आसपास अपना रास्ता जानते हैं) – Torxed
"क्या आपने कमांड प्रॉम्प्ट को फिर से शुरू किया है जब आपने डीएलएल को पाथ में जोड़ा है" - हाँ, मैंने – user2052437
डीएल को उसी निर्देशिका में रखने का प्रयास किया और ctypes को आजमाएं उन पर? या अगर इससे शुरू करने में मदद मिल सकती है? मुझे नहीं पता कि वे डीएलएल की विशिष्ट जगह पर '। /' की तलाश में हैं, लेकिन यह कोशिश करने के लिए अच्छा हो सकता है? - बकवास, बस सवाल फिर से पढ़ें .. आप पहले से ही किया है .. (मैं थक गया हूँ, 00:00 पूर्वाह्न) – Torxed