2011-11-02 39 views
3

我正在尋找一種方法來永久存儲由python程序在運行時創建的元組。所以,我決定爲了簡單到的數據寫入到一個文本文件(或者是有一些更優雅而又簡單的解決建議?)讀取存儲在文本文件中的元組

這樣做的命令看起來像:

import codecs 
txt = codecs.open("data.txt", "w", encoding="utf-8") 
    . 
    . 
    . 
data = set1, set2, set3 
print >> txt, data 

導致一個文本,看起來像

(u'name1', 'file1', 'date1') 
(u'name2', 'file2', 'date2') 
    . 
    . 
    . 

什麼是訪問data.txt中僅顯示了所有第二個數據集的正確方法,在本例的情況下「文件1」,「文件2」等?

我搞砸了for循環,read()和readline()但從來沒有得到只是我的文件中的第二項的簡單輸出......我希望有人可以幫助我呢?

非常感謝!

+1

由於這是表格數據,您也可以使用'csv'。 – agf

回答

5

考慮使用pickle.dumppickle.load爲您做所有的工作。如果您不介意該文件是Python特定格式,那麼這是一個合理的選擇。

另請考慮使用sqlite3來存儲數據。這種格式可以被其他程序讀取,並且是可查詢的(即,您可以檢索文件名而不是整個記錄)。

否則,讀取直接文本轉儲的傳統解決方案是逐行讀取文件,解析或評估文本以將其轉換回Python對象,然後提取感興趣的字段:

for line in codecs.open("data.txt", "r", encoding="utf-8"): 
    tup = ast.literal_eval(line) 
    print tup[1] 
+0

感謝您的建議。我知道決定使用Python的sqlie3模塊,並希望最好:) – birgit

3

考慮使用pickle來保存變量。

+0

這是有益的建議,但不回答他如何閱讀他已經創建的文件的問題。這仍然值得回答。 –

+0

是的,但我同意你在編輯中寫的代碼,所以我不會寫一個副本。 – ziu

+1

夠公平的。也許這兩個答案將清楚表明,重新創建特殊用途文件格式不是方法:-) –

相關問題