-1
file_name=raw_input("Where would you like to save the file?(the file name will be dits)")
    output=open(file_name+"dits.txt","w")#saves the path
    k=person.keys()
    output.write(k)
    v=person.values(k)
    i=0
    for xrange in 3:# prints the values into a readable file
        output.write(v)
        output.write(" ")
        i=i+1
    output.close()

辞書をファイルに保存しようとしていますが、辞書には1つのキーと3つの値があります

person[name]=(bd,email,homepage)

これが私が辞書を保存した方法です 私のコードの問題は何ですか? 約 1 時間かけて修正を試みました。ありがとうございます。

4

2 に答える 2

2

ユーザーが読める表現が必要ない場合は、オブジェクトのシリアル化を行うpickle モジュールを見てください。

読み取り可能なものが必要な場合は、JSON エンコーダーが標準ライブラリに含まれています。wjich は基本的なデータ型 (文字列、数値、リスト、辞書) をシリアル化します。

于 2013-11-02T19:58:49.697 に答える
1

ここであなたの一般的なアプローチは間違っています。私があなたの宿題をするべきかどうかはわかりませんが、あなたが書いたプログラムのバージョンは次のとおりです。

# Request the file name
file_name=raw_input("Where would you like to save the file?(the file name will be dits)")

# Open the file
output=open(file_name+"dits.txt","w")
keys=person.keys()

# Iterate through the keys and write the values to each line
try:
    for key in keys:
        output.write(key+" ")
        output.write(" ".join([str(val) for val in person[key]]))   # Write all values to a line
        output.write("\n")
finally:
    output.close()

これはあなたのものよりも少し一般的です (すべての値の文字列バージョンをファイルに書き込むだけです) が、特定のニーズがあまりない人がいつかこれを読む可能性があると思います。

:これは、スペースで区切られたキーと元の質問の表現方法の値のリストが特に必要な場合のみです。これらの非常に具体的な要件がない場合は、pickle または json またはその他の標準的なシリアル化形式が望ましいことに同意します!

于 2013-11-02T20:12:57.833 に答える