2012-07-25 45 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每發生。

相關問題