Python:访问位于文本文件内的字典

时间:2011-07-12 16:32:42

标签: python file google-chrome dictionary bookmarks

我正在编写一个快速而又脏的脚本来获取Chromium的书签并将它们转换为Openbox的管道菜单。 Chromium将其书签存储在名为书签的文件中,该文件以字典形式存储信息,如下所示:

{
   "checksum": "99999999999999999999",
   "roots": {
      "bookmark_bar": {
         "children": [ {
            "date_added": "9999999999999999999",
            "id": "9",
            "name": "Facebook",
            "type": "url",
            "url": "http://www.facebook.com/"
         }, {
            "date_added": "999999999999",
            "id": "9",
            "name": "Twitter",
            "type": "url",
            "url": "http://twitter.com/"

如何在Python中使用此文件打开此字典并将其分配给变量。我知道你用open()打开一个文件,但我真的不知道从那里去哪里。最后,我希望能够从像bookmarks[bookmarks_bar][children][0][name]这样的变量访问字典中的信息并让它返回'Facebook'

2 个答案:

答案 0 :(得分:4)

你知道这是不是一个json文件?如果是这样,python提供了一个json库。

Json可用作数据序列化/交换格式。这很好,因为它是跨平台的。像你问的那样导入这个似乎相当容易,这是文档中的一个例子:

>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
[u'foo', {u'bar': [u'baz', None, 1.0, 2]}]

因此,在您的情况下,它看起来像:

import json
with open(file.txt) as f:
    text = f.read()
    bookmarks = json.loads(text)
print bookmarks[bookmarks_bar][children][0][name]

答案 1 :(得分:1)

JSON绝对是"对"这样做的方法,但对于快速而肮脏的脚本eval()可能就足够了:

with open('file.txt') as f:
    bookmarks = eval(f.read())