使用python读取非xml格式的plist文件

2024-10-02 00:43:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读取plist(propertly list)格式的MacOS数据,它不是XML格式,不是二进制格式,而是其他ascii格式。例如:

addr= {
    City = "San Francisco Bay Area";
}

我试图把它解析成一个Python字典。不幸的是,plistlib.loads在我试图解析它时返回InvalidFileException()

^{pr2}$

产生:

Traceback (most recent call last):
  File "x.py", line 9, in <module>
    print( plistlib.loads( plist ) )
  File "/Users/simsong/anaconda/lib/python3.6/plistlib.py", line 1024, in loads
    fp, fmt=fmt, use_builtin_types=use_builtin_types, dict_type=dict_type)
  File "/Users/simsong/anaconda/lib/python3.6/plistlib.py", line 1009, in load
    raise InvalidFileException()
plistlib.InvalidFileException: Invalid file

正确的方法是什么?在


Tags: inpyuselib格式lineanacondausers
1条回答
网友
1楼 · 发布于 2024-10-02 00:43:25

你说的是JSON格式的plist文件。你的例子不是JSON。在

让我们从这个开始sample plist in XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="1.0">
<dict>
    <key>Author</key>
    <string>William Shakespeare</string>
    <key>Lines</key>
    <array>
        <string>It is a tale told by an idiot,</string>
        <string>Full of sound and fury, signifying nothing.</string>
    </array>
    <key>Birthdate</key>
    <integer>1564</integer>
</dict>
</plist>

并将其转换为JSON格式:

^{pr2}$

现在,您可以使用JSON库来阅读本文。在

import json

plist_text = '{"Author":"William Shakespeare","Birthdate":1564,"Lines":["It is a tale told by an idiot,","Full of sound and fury, signifying nothing."]}'

plist = json.loads(plist_text)

print('The author is ' + plist['Author'])

输出:

$ python3 plist.py 
$ The author is William Shakespeare

相关问题 更多 >

    热门问题