2012-04-24 86 views
2

我以列表的形式收集數據並將數據寫入文本文件。在文本文件中的數據看起來像從python中讀取列表中的列表作爲列表的列表

[[123231,2345,888754],[223467,85645]] 

我想讀回,並以列表的在我的程序列表中保存。但是當我從文件中執行read()並嘗試創建一個扁平列表時,它將一切都視爲一個字符串,並且解釋完全改變,並且我無法查詢在Python中作爲普通列表列表閱讀後得到的結果。

有人可以幫我讀取文件並以與列表清單相同的格式存儲嗎?

謝謝!

+0

你能不能讓你的問題更乾淨? – Denis 2012-04-24 08:30:47

回答

5

這看起來像有效JSON

因此,你可以簡單地做:

import json 
with open(myfilename) as f: 
    lst = json.load(f) 

要保存您的文件 「列表清單」,做

with open(myfilename, "w") as f: 
    json.dump(lst, f) 
1

你可以只pickle您的數據來代替。要保存它:

>>> import pickle 
>>> p= [[123231,2345,888754],[223467,85645]] 
>>> with open("data.txt", "wb") as internal_filename: 
...  pickle.dump(p, internal_filename) 

加載它:

>>> with open("data.txt", "rb") as new_filename: 
...  pp = pickle.load(new_filename) 
>>> pp 
[[123231, 2345, 888754], [223467, 85645]] 

這也是有用的更復雜的對象。你

1

也可以使用eval實現這一點,但其他的解決方案可能更好:

# reading a list from a file 
f = open('data.txt', 'r') 
l = eval(f.read()) 

# storing a list to a file 
outf = open('out','w') 
outf.write(str(l)) 

有時使用eval是一種不好的做法。欲瞭解更多信息,請查詢this post

+0

這隻涵蓋數據的讀取,而不是存儲。 – jamylak 2012-04-24 08:44:09

+0

是的你有權利。我更新了我的答案。 – 2012-04-24 08:53:52

1

確保:

  • 該列表的數據是文件是一個Python文件
  • 列表中的數據被分配給一個變量
  • 該文件是一個Python模塊中

然後,您可以從python文件導入列表。 例如說名單,my_list,在該文件中 mylist.py

如:

# This is the file mylist.py 
my_list = [[123231,2345,888754],[223467,85645]] 

然後你可以把my_list以Python列表

from mylist import my_list 

for item in mylist: 
    print "item = <", item, ">"