2010-08-09 53 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的选项真的使这个很简单。

相关问题