我对Python 2.5有疑问。首先,我以列表格式保存文件,如下所示:
list_f = open("list.txt", "w")
list = [{"a" : "b", "c" : 100}, {"a" : "c", "c" : 101}]
print >> list_f, list
所以,我们得到一个像这样的list.txt:
[{'a' : 'b', 'c': 100}, {'a' : 'c', 'c' : 101}]
这是此文件中唯一的一行。请注意,列表中有两个dict对象,每个dict都有一个String值和一个整数值。
我的问题是如何加载文件并重新创建列表对象作为前者。
答案 0 :(得分:2)
你可以使用ast.literal_eval()
恢复对象,但实际上应使用一些理智的序列化格式,如JSON或Python的pickle模块。
示例:
# JSON
import json
# saving
with open("a.json", "w") as f:
json.dump(obj, f)
# loading
with(open("a.json") as f:
obj = json.load(f)
对于pickle,请将每个json
替换为pickle
。
答案 1 :(得分:1)
您使用json
标准库模块来代替json.dump(my_list)
,然后阅读它json.load(my_file_with_my_lists)
,它会将您的列表转换为JSON并再次将其读回。
干杯。
答案 2 :(得分:1)
import ast
with open('list.txt') as f:
output = ast.literal_eval(f.read())
返回output
作为字典的真实列表,而不是字符串表示f.read()
将返回。
无论如何,如果您同时撰写和阅读文件,请使用一些序列化界面,例如cPickle
或json
。
答案 3 :(得分:0)
您可以使用内置函数中的http://docs.python.org/library/functions.html#execfile函数。 但更好的方法是使用http://docs.python.org/library/pickle.html模块在文件
中存储python数据结构