-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)

这就是我保存字典的方式 我的代码有什么问题?我一直在尝试修复它大约一个小时,谢谢!

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 回答