2012-11-26 10 views
17

मैं प्रोग्राम के प्रत्येक रन से डेटा सेट को सहेजने के लिए सीपीकल का उपयोग करता हूं। चूंकि मुझे कभी-कभी कोड चलाने के बिना डेटा की रूपरेखा देखने की आवश्यकता होती है, इसलिए मुझे फ़ाइल पर डबल-क्लिक करके सामग्री को तुरंत देखने का एक आसान तरीका चाहिए। मैं कुछ print स्क्रिप्ट चलाने के लिए, प्रत्येक बार एक टर्मिनल और पॉइंटिंग पॉइंट को लोड करने से बचने की कोशिश कर रहा हूं।क्या विंडोज़ में पायथन लोड किए बिना सीपीकल या पिकल फ़ाइल सामग्री देखने का कोई तरीका है?

मैंने नोटपैड ++ प्लगइन्स की तलाश की लेकिन कुछ भी नहीं मिला।

क्या ऐसा करने का कोई आसान तरीका है? क्या किसी के पास कोई सुझाव है?

नोट: मैं Windows 7.

+3

आप एक [ASCII प्रोटोकॉल] (http://docs.python.org/2/library/pickle.html#data-stream-format) का उपयोग करके 'पिकले' कर सकते हैं, जो नोटपैड से पठनीय होगा (भले ही यह अच्छा लगेगा, खासकर यदि आप जटिल वस्तुओं को डालते हैं)। – Bakuriu

उत्तर

9

मैं वास्तव में संदेह pickle साथ के बाद से यह करने के लिए किसी भी तरह से बनाया जा सकता है, तो आप में काफी कुछ भी पैक कर सकते हैं चलाते हैं। जब अनपिकलिंग हो, तो आपको मॉड्यूल इत्यादि लोड करने में सक्षम होना चाहिए जो वस्तु को उठाए जाने पर लोड किया गया था। दूसरे शब्दों में, सामान्य रूप से, unpickle कुछ करने में सक्षम होने के लिए, पायथन को प्रोग्राम के "पर्यावरण" को पुन: पेश करने में सक्षम होना चाहिए (या कम से कम पर्याप्त अनुमान) - लोड किए गए मॉड्यूल, वैश्विक नामस्थान में कक्षाएं आदि। .. सामान्य रूप से, उपयोगकर्ता से कुछ मदद के बिना यह संभव नहीं है। पर विचार करें:

import pickle 
class Foo(object): pass 

a = Foo() 
with open('data.pickle','wb') as f: 
    pickle.dump(a,f) 

अब अगर आप एक अलग लिपि में इस बहाल करने की कोशिश, अजगर जानने क्या एक Foo तरह लग रहा है का कोई रास्ता नहीं है और इसलिए यह वस्तु पुनर्स्थापित नहीं कर सकता (जब तक आप में एक उपयुक्त Foo वस्तु को परिभाषित वह स्क्रिप्ट)। यह वास्तव में एक प्रक्रिया नहीं है जिसे कुछ मानव हस्तक्षेप के बिना किया जा सकता है।

बेशक, एक तर्कसंगत उपयोगी विशेष मामला जहां आप केवल बिल्टिन ऑब्जेक्ट्स चुन रहे हैं और मानक लाइब्रेरी से चीजों का प्रयास किया जा सकता है ... लेकिन मुझे नहीं लगता कि आप एक सामान्य अनपिकर एक्सटेंशन लिख सकते हैं।

+1

अचार के बारे में कोई विचार नहीं है, लेकिन इसके आउटपुट में "पर्यावरण" की सभी आवश्यक जानकारी को संग्रहीत करने से प्रोटोकॉल को रोकना कुछ भी नहीं है। इस मामले में यह काफी मामूली होगा: हमने एक नई शैली के वर्ग को बिना अतिरिक्त पैरामीटर के संग्रहित किया। तो यह निश्चित रूप से ऐसा करना संभव है - इसका मतलब केवल कुछ अतिरिक्त जानकारी संग्रहीत करना हो सकता है। – Voo

23

अजगर 3.2 के लिए +/2.7 + आप (के __repr__ के) कमांड लाइन से अचार देख सकते हैं:

$ python -c "import pickle; pickle.dump({'hello': 'world'}, open('obj.dat', 'wb'))" 
$ python -mpickle obj.dat 
{'hello': 'world'} 

यह Windows खोल में इस एकीकृत करने के लिए आसान होना चाहिए।

+1

यह वही जवाब है जब मैं इस प्रश्न को गुमराह करते समय देख रहा था (2017 में)। इसे स्वीकृत उत्तर के रूप में चिह्नित किया जाना चाहिए। –

+1

बहुत उपयोगी! ऐसा लगता है कि पाइथन 2.7 अचार के साथ-साथ कम से कम एक मामले के लिए जहां मुझे इसकी आवश्यकता थी। –

+0

@ हंस-मार्टिनमोस्नर धन्यवाद मैंने जवाब अपडेट किया। शायद इसे वापस भेज दिया गया था। – jth

संबंधित मुद्दे