1

我对 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 值和一个 integer 值。

我的问题是如何加载文件并重新创建一个列表对象作为前一个对象。

4

4 回答 4

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)

对于泡菜,将每次出现的jsonby替换pickle

于 2012-07-25T14:07:05.353 回答
1

您将使用json标准库模块来代替执行json.dump(my_list)然后读取它json.load(my_file_with_my_lists),这会将您的列表转换为 JSON 并再次读取它。

干杯。

于 2012-07-25T14:06:14.580 回答
1
import ast
with open('list.txt') as f:
    output = ast.literal_eval(f.read())

作为一个真实的字典列表返回output,而不是作为它的字符串表示f.read()返回。

无论如何,如果您同时在写入和读取文件,请使用一些序列化接口,例如cPickleor json

于 2012-07-25T14:06:49.247 回答
0

您可以从内置函数中使用这个http://docs.python.org/library/functions.html#execfile函数。但更好的方法是使用http://docs.python.org/library/pickle.html模块将 python 数据结构存储在文件中

于 2012-07-25T14:14:13.147 回答