2016-05-01 17 views
11

辞書があり、ファイルに書き込もうとしています。私は何見当がつかないPythonのテキストファイルに辞書を書く

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

:私は、エラー

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)) 

を来た

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

私はまだPythonの初心者です。 問題の解決方法がわかっている場合は、回答を提供してください。

注:私は、Python 3を使用しています、2つの

おかげ

あなたが読み取りモードでファイルを開くと、そこに書き込みをしようとしているすべての

答えて

21

まずPythonのではありません。 相談する - IO modes python

第2に、文字列をファイルに書き込むことができます。辞書オブジェクトを書きたい場合は、それを文字列に変換するか、またはシリアル化する必要があります。シリアライゼーションの場合

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

私はエラーがあります:file。TypeError:無効なファイル:{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

また、ファイルを読み書きするときには 'with'ステートメントを使うべきです:https://stackoverflow.com/questions/3012488/what-is-the-python-with-statement-designed-for – Falko