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

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

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

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



该模块提供了一个用于读写 Mac OS X 主要使用的“属性列表”文件的接口,并支持二进制和 XML plist 文件。

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

要写出和解析 plist 文件,请使用 dump()load() 函数。

要处理字节对象中的 plist 数据,请使用 dumps()loads()

值可以是字符串、整数、浮点数、布尔值、元组、列表、字典(但仅限于字符串键)、Databytesbytesarraydatetime.datetime 对象。

3.4 版更改: 新 API,弃用旧 API。 添加了对二进制格式 plist 的支持。


也可以看看

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


该模块定义了以下功能:

plistlib.load(fp, \*, fmt=None, use_builtin_types=True, dict_type=dict)

读取 plist 文件。 fp 应该是一个可读的二进制文件对象。 返回解压后的根对象(通常是字典)。

fmt 是文件的格式,以下值有效:

如果 use_builtin_types 为真(默认),二进制数据将作为 bytes 的实例返回,否则作为 Data 的实例返回。

dict_type 是用于从 plist 文件中读取的字典的类型。 可以使用 collections.OrderedDict 恢复 plist 的确切结构(尽管键的顺序在 plist 文件中不重要)。

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

当无法解析文件时,二进制格式的解析器会引发 InvalidFileException

3.4 版中的新功能。

plistlib.loads(data, \*, fmt=None, use_builtin_types=True, dict_type=dict)

从字节对象加载 plist。 有关关键字参数的说明,请参阅 load()

3.4 版中的新功能。

plistlib.dump(value, fp, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False)

value 写入 plist 文件。 Fp 应该是一个可写的二进制文件对象。

fmt 参数指定 plist 文件的格式,可以是以下值之一:

sort_keys 为 true(默认)时,字典的键将按排序顺序写入 plist,否则将按字典的迭代顺序写入。

skipkeys 为 false(默认值)时,当字典的键不是字符串时,函数会引发 TypeError,否则会跳过这些键。

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

对于无法在(二进制)plist 文件中表示的整数值,将引发 OverflowError

3.4 版中的新功能。

plistlib.dumps(value, \*, fmt=FMT_XML, sort_keys=True, skipkeys=False)

value 作为 plist 格式的字节对象返回。 有关此函数的关键字参数的说明,请参阅 dump() 的文档。

3.4 版中的新功能。

不推荐使用以下函数:

plistlib.readPlist(pathOrFile)

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

该函数调用 load() 来完成实际工作,有关关键字参数的解释,请参阅 函数 的文档。

笔记

结果中的 dict 值具有遵循 __getitem___getattr__ 方法。 这意味着您可以使用属性访问来访问这些词典的项目。

自 3.4 版起已弃用: 改用 load()

plistlib.writePlist(rootObject, pathOrFile)

rootObject 写入 XML plist 文件。 pathOrFile 可以是文件名或(可写和二进制)文件对象

自 3.4 版起已弃用: 改用 dump()

plistlib.readPlistFromBytes(data)

从字节对象中读取 plist 数据。 返回根对象。

有关关键字参数的说明,请参阅 load()

笔记

结果中的 dict 值具有遵循 __getitem___getattr__ 方法。 这意味着您可以使用属性访问来访问这些词典的项目。

自 3.4 版起已弃用: 改用 loads()

plistlib.writePlistToBytes(rootObject)

rootObject 作为 XML plist 格式的字节对象返回。

自 3.4 版起已弃用: 改用 dumps()

以下类可用:

Dict([dict]):

返回与字典 dict 具有相同值的扩展映射对象。

此类是 dict 的子类,其中属性访问可用于访问项目。 也就是说,aDict.keyaDict['key'] 相同,用于获取、设置和删除映射中的项目。

自 3.0 版起已弃用。

class plistlib.Data(data)

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

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

自 3.4 版起已弃用: 改为使用 字节 对象。

以下常量可用:

plistlib.FMT_XML

plist 文件的 XML 格式。

3.4 版中的新功能。

plistlib.FMT_BINARY

plist 文件的二进制格式

3.4 版中的新功能。

14.5.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!>",
        aThirdString = "M\xe4ssig, Ma\xdf",
        aTrueValue = True,
        aFalseValue = False,
    ),
    someData = b"<binary gunk>",
    someMoreData = b"<lots of binary gunk>" * 10,
    aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
with open(fileName, 'wb') as fp:
    dump(pl, fp)

解析 plist:

with open(fileName, 'rb') as fp:
    pl = load(fp)
print(pl["aKey"])