plistlib ---生成并解析Apple .plist 文件夹

源代码: Lib/plistlib.py


这个模块提供了一个接口,用于读取和写入苹果使用的“属性列表”文件,主要是在macOS和iOS上。这个模块同时支持二进制和XML plist文件。

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

要写出并解析plist文件,请使用 dump()load() 功能。

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

值可以是字符串、整数、浮点数、布尔值、元组、列表、字典(但只能使用字符串键)。 bytesbytearraydatetime.datetime 物体。

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

在 3.8 版更改: 增加了对阅读和写作的支持 UID 由nskeyedarchiver和nskeyedunarchiver使用的二进制plist中的令牌。

在 3.9 版更改: 旧API已删除。

参见

PList manual page

苹果的文件格式文档。

本模块定义以下功能:

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

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

这个 fmt 文件的格式和以下值是否有效:

这个 dict_type 用于从plist文件读取的字典的类型。

的XML数据 FMT_XML 格式是使用expat分析器从 xml.parsers.expat --有关格式错误的XML的可能异常,请参阅其文档。未知元素将被plist解析器忽略。

二进制格式的分析器引发 InvalidFileException 当无法分析文件时。

3.4 新版功能.

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

从bytes对象加载plist。参见 load() 有关关键字参数的说明。

3.4 新版功能.

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

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

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

什么时候? sort_keys 为真(默认值),字典的键将按排序顺序写入plist,否则将按字典的迭代顺序写入。

什么时候? 滑雪板 为false(默认值),函数将引发 TypeError 如果字典的键不是字符串,则跳过此类键。

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

OverflowError 将为不能在(二进制)plist文件中表示的整数值引发。

3.4 新版功能.

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

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

3.4 新版功能.

以下类别可用:

class plistlib.UID(data)

包裹一个 int . 这在读取或写入包含uid的nskeyedarchive编码数据时使用(请参阅plist手册)。

它有一个属性, data ,它可用于检索UID的int值。 data 必须在范围内 0 <= data < 2**64 .

3.8 新版功能.

以下常量可用:

plistlib.FMT_XML

plist文件的XML格式。

3.4 新版功能.

plistlib.FMT_BINARY

plist文件的二进制格式

3.4 新版功能.

实例

生成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"])