ファイルに最後の変数しか書き込めない

投稿者: Anonymous

ファイルに最後の変数しか書き込めないです。dictionary変数に

{"Alphabet":{"A":{"a1_0":{0:100,1:120}},"a1_1":{0:150,1:130},"a1_2":{0:140,1:110}},{"B":{"b1_0":{0:2,1:3}},{"b1_1":{0:"4",1:"5"}}},・・・・{"Z":{"z1_0":{0:"90",1:"80"}},{"z1_1":{0:"40",1:"50"}}}}

という辞書が入っています。

for key,value in dictionary.items():
    x = key
    for ky,vl in value.items():
        y = ky
        for k, v in vl.items():
            z =k+ v

            s = "n".join([x, y, z])
            f = open('data.txt', 'w')
            f.write(s)
            f.close()

とかいて、xyz変数の中身をdata.txtに書き込みたいです。
しかし、今{"z1_1":{0:"40",1:"50"}のdictionary変数の一番最後の要素しかファイルに書き込めませんでした。for文の中にあるのでファイルオープンで何回も書き込めると思ったのですが、なぜ書き込めないのでしょうか?

解決

一番最後の要素しかファイルに書き込めませんでした。

実際のプログラム動作は「同じファイルに何度も上書き保存」しています。その結果として、最後の要素しか残ってないように見えています。

所望の動作に修正するには、ファイルオープンopen時に上書きモード(w)から追記モード(a)へ変更する必要があります。

# f = open('data.txt', 'w')
f = open('data.txt', 'a')
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *