私は初心者のPythonプログラマーですので、答えは簡単かもしれません。しかし、私はこの1つの質問を調査して数日間過ごしましたが、私は困惑しています。これは私の最初のStack Overflow投稿ですので、ここでいくつかのルールを破っているなら、親切にしてください。 :)Python:辞書をテキストファイル(CSV?)に書き込み、そのテキストファイルを辞書に読み込みます。
Pythonを使用して、複数の行にある2つのフィールドを新しいテキストファイルに書き出し、後でそのテキストファイルを新しい辞書に読み込んで、以前の値を参照します。
私がここで見つけたコードをテストしています:Example codeです。提供されたソリューションには64件の投票権があり、質問者から最高の回答とマークされています。だから、ほとんどの人にとって正しいと思われる。
私のテストコードは、初期辞書mydictの作成に成功し、それをテキストファイルに保存します。ただし、テキストファイルを新しい辞書mydict2に読み込もうとすると、何も表示されません。何も表示されず、エラーメッセージも何も表示されず、何も表示されません。
私はここで何が欠けていますか?それが作成されること
import csv
mydict = {1:11,2:22,3:33}
print mydict
print mydict[1]
writer = csv.writer(open('dict.csv', 'wb'))
for key, value in mydict.items():
writer.writerow([key, value])
reader = csv.reader(open('dict.csv', 'rb'))
mydict2 = dict(reader)
print mydict2
ここ
テキストファイルの内容は以下のとおりです:ここ
1,11
2,22
3,33
は、私が実行したときに結果がを表示
です。ここ は私の テストコードですテストコード:{1: 11, 2: 22, 3: 33}
11
{}
最初の2行の結果出力からわかるように、最初の出力辞書mydictが正しく作成され、参照値が表示されます。ただし、3行目の出力には、テキストファイルからデータを読み込んだ新しい辞書mydict2の内容が表示されます。しかし、テキストファイルの内容は何らかの形で空である新しい辞書に読み込まれませんでした。
これを修正してテキストファイルの内容を辞書に読み込む方法はありますか?
それだけです!それはファイルの競合かもしれないと思ったが、write文とread文の間でファイルを閉じる方法の簡潔な例を見つけることができなかった。 もう少し詳しく調べました。読者を直接閉じる方法はありません。提案された構文は、あなたが使用したもの、つまりWITH文です。 – dwwheelock
@dwwheelock問題はファイル競合ではありませんが、バッファリング:データは書き込み直後にディスクに保存されませんが、バッファをいっぱいにすると(シーケンシャル書き込みの場合)、または何らかの操作を実行すると内容をフラッシュするように強制するファイルで(シーク、フラッシュ、クローズ、...)そして、あなたは読者を閉じることはできません(読者が使用するファイルオブジェクトを閉じることができます)。私は元の例を 'with'を使うように修正しました - 私は辞書を使って読み書きする方法を示し、基本的なファイルの意味を教えるのではなく...。 –
あなたの例に対する追加の解説と更新をありがとうございました。 – dwwheelock