plistlib
---生成并解析Apple .plist
文件夹¶
源代码: Lib/plistlib.py
这个模块提供了一个接口,用于读取和写入苹果使用的“属性列表”文件,主要是在macOS和iOS上。这个模块同时支持二进制和XML plist文件。
属性清单 (.plist
)文件格式是支持基本对象类型的简单序列化,如字典、列表、数字和字符串。通常顶级对象是字典。
要写出并解析plist文件,请使用 dump()
和 load()
功能。
要使用字节对象中的plist数据,请使用 dumps()
和 loads()
.
值可以是字符串、整数、浮点数、布尔值、元组、列表、字典(但只能使用字符串键)。 bytes
, bytearray
或 datetime.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 文件的格式和以下值是否有效:
None
:自动检测文件格式FMT_XML
:xml文件格式FMT_BINARY
:二进制plist格式
这个 dict_type 用于从plist文件读取的字典的类型。
的XML数据
FMT_XML
格式是使用expat分析器从xml.parsers.expat
--有关格式错误的XML的可能异常,请参阅其文档。未知元素将被plist解析器忽略。二进制格式的分析器引发
InvalidFileException
当无法分析文件时。3.4 新版功能.
- plistlib.dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)¶
写 value 到plist文件。 Fp 应该是可写的二进制文件对象。
这个 fmt 参数指定plist文件的格式,可以是以下值之一:
FMT_XML
:XML格式的plist文件FMT_BINARY
:二进制格式的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"])