1. ホーム
  2. python-3.x

[解決済み] テキストファイルに辞書を書き込む?

2022-03-07 21:52:51

質問

辞書を持っていて、それをファイルに書き込もうとしています。

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

まだpython初心者のため、どうしたらいいのか全くわかりません。 どなたか解決方法をご存知の方がいらっしゃいましたら、ご回答をお願いいたします。

注:私はpython 2ではなく、python 3を使用しています。

解決方法は?

まず、ファイルを読み込みモードで開き、そこに書き込もうとしています。 相談する IOモード 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

Python 3.x の場合、pickle パッケージの import は異なります。

import _pickle as pickle