On this page
plistlib —生成和解析 Mac OS X .plist 文件
源代码: Lib/plistlib.py
该模块提供了一个用于读写 Mac OS X 主要使用的“属性列表”文件的接口,并且支持二进制和 XML plist 文件。
属性列表(.plist
)文件格式是一种简单的序列化,支持基本对象类型,如字典,列表,数字和字符串。通常,顶级对象是字典。
要写出并解析 plist 文件,请使用dump()和load()函数。
要使用字节对象中的 plist 数据,请使用dumps()和loads()。
值可以是字符串,整数,浮点数,布尔值,Tuples,列表,字典(但仅带字符串键),Data,bytes,bytesarray
或datetime.datetime对象。
在版本 3.4 中更改:不推荐使用新 API 和旧 API。增加了对二进制格式的支持。
在 3.8 版中进行了更改:添加了对读取和写入UID令牌的支持,如 NSKeyedArchiver 和 NSKeyedUnarchiver 所使用的。
See also
Apple 的文件格式文档。
该模块定义以下Function:
plistlib.
load
(* fp ,**,* fmt = None , use_builtin_types = True , dict_type = dict *)- 读取 plist 文件。 * fp *应该是可读的二进制文件对象。返回解压缩的根对象(通常是字典)。
- fmt *是文件格式,并且以下值有效:
None:自动检测文件格式
FMT_XML:XML 文件格式
FMT_BINARY:二进制 plist 格式
如果* use_builtin_types *为 true(默认值),则二进制数据将作为bytes的实例返回,否则将作为Data的实例返回。
- dict_type *是用于从 plist 文件读取的字典的类型。
FMT_XML格式的 XML 数据使用xml.parsers.expat的 Expat 解析器进行解析–有关格式错误的 XML 的可能 exception,请参阅其文档。 plist 解析器将忽略未知的元素。
无法解析文件时,二进制格式的解析器将引发InvalidFileException
。
3.4 版的新Function。
plistlib.
loads
(* data ,**,* fmt = None , use_builtin_types = True , dict_type = dict *)- 从 bytes 对象加载 plist。有关关键字参数的说明,请参见load()。
3.4 版的新Function。
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 *为 true(默认值),则字典的键将以排序的 Sequences 写入 plist,否则它们将以字典的迭代 Sequences 写入。
如果* skipkeys *为假(默认值),则当字典的键不是字符串时,该函数将引发TypeError,否则将跳过此类键。
如果对象是不受支持的类型或包含不受支持的类型的对象的容器,则会引发TypeError。
对于无法在(二进制)plist 文件中表示的整数值,将引发OverflowError。
3.4 版的新Function。
plistlib.
dumps
(* value ,**,* fmt = FMT_XML , sort_keys = True , skipkeys = False *)- 返回* value *作为 plist 格式的字节对象。有关此函数的关键字参数的说明,请参见dump()的文档。
3.4 版的新Function。
不推荐使用以下Function:
plistlib.
readPlist
(* pathOrFile *)- 读取 plist 文件。 * pathOrFile *可以是文件名,也可以是(可读和二进制)文件对象。返回解包的根对象(通常是字典)。
此函数调用load()进行实际工作,有关关键字参数的说明,请参见that function的文档。
从 3.4 版开始不推荐使用:改为使用load()。
在版本 3.7 中进行了更改:结果中的 Dict 值现在是普通 dict。您不再可以使用属性访问来访问这些词典的项目。
plistlib.
writePlist
(* rootObject , pathOrFile *)- 将* rootObject *写入 XML plist 文件。 * pathOrFile *可以是文件名,也可以是(可写和二进制)文件对象
从 3.4 版开始不推荐使用:改为使用dump()。
plistlib.
readPlistFromBytes
(* data *)- 从字节对象读取 plist 数据。返回根对象。
有关关键字参数的说明,请参见load()。
从 3.4 版开始不推荐使用:改为使用loads()。
在版本 3.7 中进行了更改:结果中的 Dict 值现在是普通 dict。您不再可以使用属性访问来访问这些词典的项目。
plistlib.
writePlistToBytes
(* rootObject *)- 返回* rootObject *作为 XML plist 格式的字节对象。
从 3.4 版开始不推荐使用:改为使用dumps()。
提供以下类:
- 类别
plistlib.
Data
(数据)- 返回围绕字节对象* data *的“数据”包装器对象。在用于/转换成函数的函数中使用它,以表示函数中可用的
<data>
类型。
- 返回围绕字节对象* data *的“数据”包装器对象。在用于/转换成函数的函数中使用它,以表示函数中可用的
它具有一个属性data
,可用于检索存储在其中的 Python 字节对象。
从 3.4 版开始不推荐使用:而是使用bytes对象。
- 类别
plistlib.
UID
(数据)- 包装int。在读取或写入包含 UID 的 NSKeyedArchiver 编码数据时使用此方法(请参见 PList 手册)。
它具有一个属性data
,可用于检索 UID 的 int 值。 data
必须在 0 <= data <2 ** 64 范围内。
3.8 版的新Function。
以下常量可用:
plistlib.
FMT_XML
- plist 文件的 XML 格式。
3.4 版的新Function。
plistlib.
FMT_BINARY
- plist 文件的二进制格式
3.4 版的新Function。
Examples
生成 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"])