如何在Python中将文件加载为List类型?

时间:2012-07-25 14:04:00

标签: python string list

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

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

4 个答案:

答案 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()将返回。

无论如何,如果您同时撰写和阅读文件,请使用一些序列化界面,例如cPicklejson

答案 3 :(得分:0)

您可以使用内置函数中的http://docs.python.org/library/functions.html#execfile函数。 但更好的方法是使用http://docs.python.org/library/pickle.html模块在​​文件

中存储python数据结构