2016-05-01 2 views
11

में एक टेक्स्ट फ़ाइल में एक शब्दकोश लिखना मेरे पास एक शब्दकोश है और मैं इसे फ़ाइल में लिखने की कोशिश कर रहा हूं।पायथन

exDict = {1:1, 2:2, 3:3} 
with open('file.txt', 'r') as file: 
    file.write(exDict) 

मैं तो त्रुटि

file.write(exDict) 
TypeError: must be str, not dict 

तो मुझे लगता है कि त्रुटि ठीक कर दी है, लेकिन एक और त्रुटि

exDict = {111:111, 222:222} 
with open('file.txt', 'r') as file: 
    file.write(str(exDict)) 

त्रुटि आया:

file.write(str(exDict)) 
io.UnsupportedOperation: not writable 

मुझे पता नहीं है क्या ऐसा करने के लिए मैं अभी भी अजगर में एक नौसिखिया हूँ। अगर कोई इस मुद्दे को हल करने के बारे में जानता है, तो कृपया एक उत्तर दें।

नोट: मैं अजगर 3 उपयोग कर रहा हूँ, अजगर नहीं 2

धन्यवाद

उत्तर

21

आप सभी पढ़ने मोड में फ़ाइल खोलने और इसे में लिखने की कोशिश कर रहे हैं सबसे पहले। परामर्श - IO modes python

दूसरा, आप केवल एक फ़ाइल को एक स्ट्रिंग लिख सकते हैं। यदि आप एक शब्दकोश ऑब्जेक्ट लिखना चाहते हैं, तो आपको इसे स्ट्रिंग में बदलने या इसे क्रमबद्ध करने की आवश्यकता है।

import json 

# as requested in comment 
exDict = {'exDict': exDict} 

with open('file.txt', 'w') as file: 
    file.write(json.dumps(exDict)) # use `json.loads` to do the reverse 

क्रमबद्धता के मामले में

import cPickle as pickle 

with open('file.txt', 'w') as file: 
    file.write(pickle.dumps(exDict)) # use `pickle.loads` to do the reverse 
+0

यह काम किया! हालांकि, यह केवल शब्दकोश की सामग्री लिखता है। क्या आप इसे लिखने के लिए प्राप्त कर सकते हैं: exDict = {111: 111, 222: 222} – Nic

+0

मैंने इसके बारे में सोचा लेकिन सोचा कि एक बेहतर तरीका था। हालांकि यह काम करता है धन्यवाद! – Nic

+0

यदि आप '=' चिह्न से बहुत जुड़े नहीं हैं, तो मैंने जो संपादन किया है वह नौकरी कर सकता है। – hspandher

1

बदलें

with `open('file.txt', 'r') as file:` 

with open('file.txt', 'w') as file: 

आप r (EAD) मोड में फ़ाइल और w नहीं खोल रहे हैं करने के लिए (संस्कार) मोड।

+0

मुझे तब त्रुटि है: फ़ाइल।लिखें (खुला (एक्सडिक्ट)) टाइप एरर: अमान्य फ़ाइल: {222: 222, 111: 111} – Nic

+0

यह तब होता है जब आप फ़ाइल के रूप में खुले (exDict, 'w') के साथ कॉल करते हैं: ' –

3
fout = "/your/outfile/here.txt" 
fo = open(fout, "w") 

for k, v in yourDictionary.items(): 
    fo.write(str(k) + ' >>> '+ str(v) + '\n\n') 

fo.close() 
+3

कोड-केवल उत्तर निराश होते हैं क्योंकि वे यह नहीं समझते कि वे इस मुद्दे को कैसे हल करते हैं। कृपया यह बताने के लिए अपना उत्तर अपडेट करें कि यह इस प्रश्न के पहले स्वीकृत और उल्लिखित उत्तरों पर कैसे सुधार करता है। कृपया समीक्षा करें [मैं एक अच्छा जवाब कैसे लिखूं] (https://stackoverflow.com/help/how-to-answer)। – FluffyKitten

+0

साथ ही, फ़ाइलों को पढ़ने और लिखते समय आपको 'साथ' कथन का उपयोग करना चाहिए: https://stackoverflow.com/questions/3012488/what-is-the-python-with-statement-designed-for – Falko