前提・実現したいこと
.confファイルを書き換えたい
現在pythonでの単体試験を行っているのですが、その際に使用している.confファイルの書き換えが意図した動作になっていなかったため質問させていただきます。
発生している問題・エラーメッセージ
.confファイルを書き換えたはずが書き換えられていない。
該当のソースコード
#test.conf #上書きされると消える予定のコメント [test] id = before_id
Python
1#test_target.py 2 3import target 4import configparser 5import unittest 6class TestTarget(unittest.TestCase): 7 conf_file = configparser.SafeConfigParser() 8 conf_file.read('./test.conf') 9 #'id'の中身を保持してから上書きする 10 tmp_id = conf_file.get('test', 'id') 11 conf_file.set('test', 'id', 'after_id') 12 13 with open('./test.conf') as opened_file: 14 conf_file.write(opened_file) 15 #'after_id'と表示されるはず★1 16 print(conf_file.get('test', 'id')) 17 18 target.confirm() 19 20 #元に戻す 21 conf_file.set('test', 'id', tmp_id) 22 with open('./test.conf') as opened_file: 23 conf_file.write(opened_file)
Python
1#target.py 2 3import configparser 4conf_file = configparser.SafeConfigParser() 5conf_file.read('./test.conf') 6 7def confirm(): 8 #なのでここでも書き換えられた値が表示されるはず★2 9 print(conf_file.get('test', 'id')) 10
上記のような形で実行してみたのですが、★1で表示されたのは'after_id'だったのですが、
★2の箇所で表示されたのは'before_id'でした。
★1ですでに書き換えられていることは確認できているのにたいして、実際の★2では書き換える前の値が表示されている理由が見当が付きませんでした。
上記を実行後にtest.confの中身を確認すると更新されていた(コメントが消えていた)ので、
書き換える対象が誤っていたとも思えません。
そうなるとなにかconfigparser の仕様で間違った認識をしているのではないかと思うのですが、
どう間違えているのかまでは分かりませんでした・・・。
初歩的なことが分かっていないだけなのかもしれませんが
なにとぞご教示のほど、よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
python3.5.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/09 06:44