क्या यह जांचने का कोई तरीका है कि फ़ाइल को pickle
द्वारा बनाया गया है? मैं सिर्फ pickle.load
द्वारा फेंकने वाले अपवादों को पकड़ सकता हूं लेकिन कोई विशिष्ट "अचार नहीं है" अपवाद नहीं है।अचार द्वारा फ़ाइल बनाई गई है या नहीं, इसका परीक्षण कैसे करें?
उत्तर
अचार फ़ाइलों के पास हेडर नहीं है इसलिए ऐसा करने के दौरान उन्हें अनपिक करने की कोशिश करने से कम पहचानने का कोई मानक तरीका नहीं है और ऐसा करने पर कोई अपवाद उठाया गया है या नहीं।
आप अपनी खुद की बढ़ाया प्रोटोकॉल pickle
मॉड्यूल में Pickler()
और Unpickler()
कक्षाएं उपवर्गीकरण द्वारा हेडर के कुछ प्रकार शामिल निर्धारित कर सकते हैं। हालांकि यह cPickle
मॉड्यूल के साथ बहुत तेज़ नहीं किया जा सकता है क्योंकि इसमें फ़ैक्टरी फ़ंक्शन हैं जिन्हें [1] उपखंडित नहीं किया जा सकता है।
एक और अधिक लचीला दृष्टिकोण आपके स्वयं के स्वतंत्र वर्गों को परिभाषित करेगा जो Pickler()
और Unpickler()
के कार्यान्वयन में इन मॉड्यूल में से किसी एक से उदाहरण थे।
अद्यतन
सभी अचार फ़ाइलों के अंतिम बाइट, pickle.STOP
opcode होना चाहिए इसलिए जब वहाँ एक शीर्ष लेख नहीं है, वहाँ प्रभावी रूप से एक बहुत कम ट्रेलर जो करने के लिए एक अपेक्षाकृत सरल बात होगी चेक।
अपने सटीक उपयोग के आधार पर आप के पूरक है कि एक मसालेदार वस्तु के प्रतिनिधित्व में अतीत STOP
opcode किसी भी डेटा के बाद से और अधिक व्यापक कुछ के साथ नजरअंदाज कर दिया है के साथ भाग प्राप्त करने में सक्षम हो सकता है [2]।
-
[1] अजगर 2 दस्तावेज में
Footnote [2]।
[2]
pickle.loads()
है, जो भी
pickle.load()
पर लागू होता है, क्योंकि यह वर्तमान में बाद के मामले में लागू हो जाता है के लिए प्रलेखन।
इसे अनपिक करने की कोशिश करने और अपवादों को पकड़ने के अलावा कोई निश्चित तरीका नहीं है।
- 1. लॉग फ़ाइल नहीं बनाई गई?
- 2. CreateProcess() द्वारा बनाई गई प्रक्रिया को कैसे समाप्त करें?
- 3. openssl द्वारा बनाई गई pycrypto हस्ताक्षर में कैसे सत्यापित करें?
- 4. सी ++ क्यों नहीं। Lib फ़ाइल बनाई गई?
- 5. उपयोगकर्ताओं द्वारा बनाई गई नई कक्षाएं?
- 6. जॉन मैककार्थी द्वारा बनाई गई पहली LISP क्या नहीं थी?
- 7. ग्रहण द्वारा बनाई गई "src" निर्देशिका क्या है?
- 8. कारखाने द्वारा बनाई गई वस्तु को कहां से हटाना है?
- 9. SciPy के `ttest_ind द्वारा बनाई गई मान्यताओं नीचे ट्रैकिंग()` समारोह
- 10. पाइथन क्रॉस-प्लेटफ़ॉर्म की अचार फ़ाइल है?
- 11. बेसिक: सत्र आईडी कैसे बनाई गई है?
- 12. सी फ़ाइल के माध्यम से विंडोज में लिनक्स या मैक फ़ाइल कैसे बनाई गई *?
- 13. सर्वर द्वारा बनाई गई घटना कब मर जाती है?
- 14. बिल्ड सफल हुआ, लेकिन कोई .lib फ़ाइल नहीं बनाई गई
- 15. नई बनाई गई इकाई
- 16. निर्दिष्ट उपयोगकर्ता द्वारा बनाई गई सभी फ़ाइलों को हटाएं
- 17. MATLAB कंपाइलर द्वारा बनाई गई MATLAB इंजन बनाम पुस्तकालय?
- 18. कोड द्वारा एंड्रॉइड videoview द्वारा फ़ाइल समर्थित है या नहीं?
- 19. सभी उपयोगकर्ताओं के लिए मेरे आवेदन द्वारा बनाई गई फ़ाइल को पूर्ण अनुमति कैसे दें?
- 20. कारखानों द्वारा बनाई गई वस्तुओं को क्रमबद्ध करने के लिए कैसे करें
- 21. विंडोज बैच फ़ाइल में कोई पथ फ़ाइल या निर्देशिका है या नहीं, तो परीक्षण कैसे करें?
- 22. पृष्ठभूमि से xargs द्वारा बनाई गई कमांड को भेजना
- 23. phpmyadmin नई बनाई गई डेटाबेस
- 24. क्या विजुअल स्टूडियो में सेटअप प्रोजेक्ट द्वारा बनाई गई setup.exe फ़ाइल का कोई बिंदु है?
- 25. निकालें() Arrays.asList() के द्वारा बनाई गई सूची पर फेंकता UnsupportedOperationException
- 26. फोर्क द्वारा बनाई गई प्रक्रियाओं के लिए तर्क कैसे पारित करें()
- 27. एक्सकोड कैसे जानता है कि परियोजना "किस द्वारा बनाई गई" थी?
- 28. कई लोगों के लिए Django द्वारा बनाई गई तालिका से सीधे पूछताछ कैसे करें?
- 29. विंडोज़ ने नई बनाई गई फ़ाइल की "बनाई गई समय" संपत्ति को पुराने समय में क्यों सेट किया है?
- 30. एंटिटी डेटा मॉडल द्वारा बनाई गई ऑब्जेक्ट पर बराबर ओवरराइड कैसे करें?
सिरका और डिल के निशान की जांच करें –
क्या आप इस बारे में चिंतित हैं कि फ़ाइल * बनाई गई है * जब आपने अभी 'pickle.dump' का उपयोग किया था, या जब आप' pickle.load' का उपयोग करते हैं तो फ़ाइल मौजूद है या नहीं? किसी भी मामले में, त्रुटि तब होती है जब आप आउटपुट या इनपुट के लिए फ़ाइल हैंडल खोल रहे हैं, वास्तविक 'अचार' रेखा में नहीं। –
मैं इस बारे में चिंतित नहीं हूं कि फाइल मौजूद है या नहीं, लेकिन इस बारे में कोई जानकारी नहीं है कि मौजूद एक फाइल 'pickle' द्वारा बनाई गई है या नहीं। – Erik