2012-07-25 67 views
1

我对Python 2.5有个疑问。首先,我在列表格式的文件保存为如下:如何在Python中将文件加载为List类型?

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}] 

这是它仅在此文件中的行。请注意,列表中有两个字典对象,每个字典都有一个String值和一个整数值。

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

+0

蟒蛇数据结构,你应该避免使用'list'(和其他蟒蛇关键字或内置)作为变量名 – 2012-07-25 14:07:38

+0

感谢,我会很谨慎。 – Samurais 2012-07-25 14:24:03

回答

1
import ast 
with open('list.txt') as f: 
    output = ast.literal_eval(f.read()) 

回报output辞书的一个真正的列表,而不是它的字符串表示f.read()将返回。

无论如何,如果您正在写入和读取文件,请使用一些序列化接口,如cPicklejson

+0

我必须使用python 2.5。如何在Python2.5中导入ast模块?有关于这个问题的讨论,但似乎没有办法。 http://www.gossamer-threads.com/lists/python/python/953807?do=post_view_threaded#953807 – Samurais 2012-07-25 14:27:00

+0

你好,我们可以把[ast.py](http://svn.python.org/view/python /branches/release27-maint/Lib/ast.py?view=markup)在sys_path中有效。我的测试代码只创建一个简单的列表,但我们需要在一些复杂的列表文件上使用它。希望它能够很好地工作。谢谢 。 – Samurais 2012-07-25 14:42:39

1

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

干杯。

2

可以恢复使用ast.literal_eval()对象,但实际上你应该使用一些理智的序列化格式,如JSON或Python的泡菜模块。

实施例:

# 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每发生。

相关问题