13.6. plistlib — 生成和解析 Mac OS X .plist 文件 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/plistlib
跳转至:导航、​搜索

13.6. 库 — 生成和解析 Mac OS X.plist 档案

2.6 版本变更: 该模块以前只在 Mac 专用库中可用,现在可用于所有平台。


源代码: :source:`Lib/plistlib.py`



该模块提供了一个用于读写 Mac OS X 主要使用的“属性列表”XML 文件的接口。

属性列表 (.plist) 文件格式是一种简单的 XML pickle,支持基本对象类型,如字典、列表、数字和字符串。 通常顶级对象是字典。

值可以是字符串、整数、浮点数、布尔值、元组、列表、字典(但仅限于字符串键)、Datadatetime.datetime 对象。 字符串值(包括字典键)可能是 unicode 字符串——它们将被写成 UTF-8。

<data> plist 类型通过 Data 类支持。 这是一个围绕 Python 字符串的薄包装器。 如果您的字符串包含控制字符,请使用 Data

也可以看看

PList 手册页
Apple 的文件格式文档。


该模块定义了以下功能:

plistlib.readPlist(pathOrFile)

读取 plist 文件。 pathOrFile 可以是文件名或(可读)文件对象。 返回解压后的根对象(通常是字典)。

XML 数据使用来自 xml.parsers.expat 的 Expat 解析器进行解析——有关格式错误的 XML 的可能异常,请参阅其文档。 未知元素将被 plist 解析器简单地忽略。

plistlib.writePlist(rootObject, pathOrFile)

rootObject 写入 plist 文件。 pathOrFile 可以是文件名或(可写)文件对象。

如果对象属于不受支持的类型或包含不受支持类型的对象的容器,则将引发 TypeError

plistlib.readPlistFromString(data)
从字符串中读取 plist。 返回根对象。
plistlib.writePlistToString(rootObject)
rootObject 作为 plist 格式的字符串返回。
plistlib.readPlistFromResource(path, restype='plst', resid=0)

path 的资源分支中读取类型为 restype 的资源的 plist。 可用性:Mac OS X。

笔记

在 Python 3.x 中,此功能已被删除。

plistlib.writePlistToResource(rootObject, path, restype='plst', resid=0)

rootObject 作为类型为 restype 的资源写入 path 的资源分支。 可用性:Mac OS X。

笔记

在 Python 3.x 中,此功能已被删除。

以下类可用:

class plistlib.Data(data)

返回围绕字符串 data 的“数据”包装对象。 这用于从/向 plists 转换的函数,以表示 plists 中可用的 <data> 类型。

它有一个属性 data,可用于检索存储在其中的 Python 字符串。

13.6.1. 例子

生成一个plist:

pl = dict(
    aString="Doodah",
    aList=["A", "B", 12, 32.1, [1, 2, 3]],
    aFloat = 0.1,
    anInt = 728,
    aDict=dict(
        anotherString="<hello & hi there!>",
        aUnicodeValue=u'M\xe4ssig, Ma\xdf',
        aTrueValue=True,
        aFalseValue=False,
    ),
    someData = Data("<binary gunk>"),
    someMoreData = Data("<lots of binary gunk>" * 10),
    aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
# unicode keys are possible, but a little awkward to use:
pl[u'\xc5benraa'] = "That was a unicode key."
writePlist(pl, fileName)

解析 plist:

pl = readPlist(pathOrFile)
print pl["aKey"]