2010-08-09 68 views
2

我想寫一個列表到文件並將文件的內容讀回到列表中。 我可以列表寫入使用simplejson如下文件:使用simplejson將列表寫入文件並將內容讀回列表

f = open("data.txt","w") 
l = ["a","b","c"] 
simplejson.dump(l,f) 
f.close() 

我們將文件讀回我做

file_contents = simplejson.load(f) 

但是,我想file_contents是JSON格式。有什麼辦法將它轉換爲列表?

謝謝。

+0

當您打印'file_contents'時,您看到了什麼?不要猜測,請實際顯示實際價值。 – 2010-08-09 23:47:48

+0

它顯示[u'a',u'b',u'c'] – Tom 2010-08-09 23:55:36

+0

這意味着它已經是一個列表了......前綴'u'說這些字符串是unicode,但它正在做你想要的。 .. – 2010-08-10 00:39:13

回答

6
with open("data.txt") as f: 
    filecontents = simplejson.load(f) 

確實重新加載了您指定的數據。可能會令您困惑的是,JSON中的所有字符串始終爲 Unicode - JSON(如Javascript)沒有與「unicode」不同的「字節串」數據類型。

編輯我沒有老simplejson周圍更多的(標準Python庫爲json,因爲其目前的版本已經成爲部分),但在這裏它是如何工作(在希望使json僞裝成simplejson避免混淆你 - )...!

>>> import json 
>>> simplejson = json 
>>> f = open("data.txt","w") 
>>> l = ["a","b","c"] 
>>> simplejson.dump(l,f) 
>>> f.close() 
>>> with open("data.txt") as f: fc = simplejson.load(f) 
... 
>>> fc 
[u'a', u'b', u'c'] 
>>> fc.append("d") 
>>> fc 
[u'a', u'b', u'c', 'd'] 
>>> 

如果這個確切的代碼(前兩行的淨如果你做什麼,而不是當然的import simplejson ;-)不匹配你觀察一下,你」我發現了一個bug,所以報告你正在使用什麼版本的Python和simplejson是至關重要的,你得到什麼錯誤,完成跟蹤(編輯你的Q添加這個 - 顯然至關重要的信息!)。

+0

感謝您的回覆。但是,我無法將新項目添加到文件內容。例如,在filecontents = simplejson.load(f)之後,如果我做了filecontents.append(「d」),程序會給出錯誤。有任何解決這個問題的方法嗎 ?謝謝。 – Tom 2010-08-10 00:07:06

+0

@Tom,我剛剛在2.6上查看了你的問題的確切代碼,我可以追加到結果列表中。此外,沒有Unicode字符串。 – aaronasterling 2010-08-10 00:18:25

+0

@Tom,「給出錯誤」沒有明確說明哪些(編輯你的Q添加追溯!)看起來像試圖阻止任何人能夠幫助你 - 就像完全缺乏有關Python版本的信息以及你使用的simplejson版本和simplejson版本,當然;-)。儘管如此,我編輯了我的A來展示代碼如何在Python 2.6上給我絕對沒有任何錯誤(當然,它*會提供unicode字符串,與@aaron在此問題上的令人吃驚的評論相反)。 – 2010-08-10 00:24:06

-1

.read_file.write_fileUnipath的選項真的使這個很簡單。