2010-08-24 13 views
8

यहाँ है कोड मैं:मैं ऑब्जेक्ट कैसे उठा सकता हूं?

import pickle 

alist = ['here', 'there'] 
c = open('config.pck', 'w') 

pickle.dump(alist, c) 

और इस त्रुटि मैं प्राप्त है:

Traceback (most recent call last): 
    File "C:\pickle.py", line 1, in ? 
import pickle 
    File "C:\pickle.py", line 6, in ? 
pickle.dump(alist, c) 
AttributeError: 'module' object has no attribute 'dump' 

क्या चल रहा? मैं विंडोज़ xp

+0

http://en.wikipedia.org/wiki/Pickling ... –

+1

गलत साइट, http://cooking.stackexchange.com/ –

उत्तर

20

पर पाइथन 2.4 का उपयोग कर रहा हूं अपनी फ़ाइल pickle.py को कॉल न करें। यह एक ही नाम के पायथन मानक libary मॉड्यूल के साथ संघर्ष करता है। तो आपका import pickle पायथन मॉड्यूल नहीं उठा रहा है।

+0

मुझे इसे हराएं :) मैं अपना हटा दूंगा। लेकिन क्या यह किसी प्रकार का परिपत्र संदर्भ त्रुटि नहीं फेंकना चाहिए? अनंत लूप? ;) – froadie

+0

धन्यवाद, यह काम किया। अब आपने कहा था कि मुझे अतीत में इस मुद्दे के बारे में पढ़ना याद है। मुझे याद होगा कि मेरी स्क्रिप्ट्स को मेरे द्वारा आयात किए जाने वाले मॉड्यूल के समान नाम नहीं दिया जाएगा: डी – Richard

+0

@froadie: हे, वास्तव में, मुझे ऐसा नहीं लगता है, क्योंकि 'आयात मॉड्यूल' मॉड्यूल को फिर से लोड नहीं करता है अगर इसे पहले ही आयात किया जा चुका है। – unutbu

3

आपके द्वारा मेरे लिए कोड ठीक है।

Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on 
win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pickle 
>>> 
>>> alist = ['here', 'there'] 
>>> c = open('config.pck', 'w') 
>>> 
>>> pickle.dump(alist, c) 
>>> 

मुद्दा यह है कि आपके फ़ाइल नाम "pickle.py" import pickle बयान अपनी खुद की फ़ाइल के बजाय मुख्य पुस्तकालय से आयात करने की कोशिश कर रहा है है। अपनी कोड फ़ाइल का नाम बदलें।

1

आपकी स्क्रिप्ट को अचार कहा जाता है और इसलिए मानक लाइब्रेरी से मॉड्यूल पिक को छाया करता है। यह स्वयं आयात करता है और dump फ़ंक्शन को कॉल करने का प्रयास करता है (और निश्चित रूप से इसमें कोई नहीं है)।

ध्यान दें कि आप "भाग्यशाली" हैं कि आप एक अनंत आयात लूप में लात नहीं पा रहे हैं (क्योंकि एक ही मॉड्यूल को दो बार आयात करना स्मृति में उसी मॉड्यूल ऑब्जेक्ट का एक और संदर्भ बनाता है)।

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

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