plistlib生成并解析Mac OS X .plist文件(5)Python文件格式(必读进阶Python教程)(参考资料)
该模块提供了一个界面,用于读取和写入主要由Mac OS X使用的“属性列表”文件,并支持二进制和XML plist文件。
属性list(.plist
)文件格式是一个简单的序列化,支持基本对象类型,如字典,列表,数字和字符串。通常顶级对象是字典。
要写出并解析plist文件,请使用dump()
和 load()
函数。
要使用字节对象处理plist数据,请使用dumps()
和loads()
。
值可以是字符串,整数,浮点数,布尔值,元组,列表,字典(但只有字符串键)Data
,bytes
,bytesarray
或datetime.datetime
对象。
版本3.4中已更改:新API,旧API已弃用。添加了对二进制格式plist的支持。
也可以看看
- PList手册页
- Apple的文件格式文档。
该模块定义了以下功能:
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数据使用Expat解析器进行解析xml.parsers.expat
– 请参阅其文档,了解格式错误的XML可能存在的异常。plist解析器将简单地忽略未知元素。InvalidFileException
当无法解析文件时,会生成二进制格式的解析器。版本3.4中的新功能。
plistlib.
loads
(data,*,fmt = None,use_builtin_types = True,dict_type = dict )- 从bytes对象加载plist。有关
load()
关键字参数的说明,请参阅。版本3.4中的新功能。
plistlib.
dump
(value,fp,*,fmt = FMT_XML,sort_keys = True,skipkeys = False )- 将值写入plist文件。Fp应该是一个可写的二进制文件对象。
该FMT参数指定plist文件的格式,并且可以是以下值之一:
FMT_XML
:XML格式的plist文件FMT_BINARY
:二进制格式化的plist文件
当sort_keys为true(默认值)时,字典的键将按排序顺序写入plist,否则它们将以字典的迭代顺序写入。
当skipkeys为false(默认值)
TypeError
时,当字典的键不是字符串时,函数会引发,否则会跳过此类键。TypeError
如果对象属于不受支持的类型或包含不受支持类型的对象的容器,则将引发A.一个
OverflowError
将提高对于不能在(二进制)的plist文件来表示的整数值。版本3.4中的新功能。
plistlib.
dumps
(value,*,fmt = FMT_XML,sort_keys = True,skipkeys = False )- 将值返回为plist格式的字节对象。有关
dump()
此函数的关键字参数的说明,请参阅文档。版本3.4中的新功能。
不推荐使用以下函数:
plistlib.
readPlist
(pathOrFile )- 阅读plist文件。pathOrFile可以是文件名或(可读和二进制)文件对象。返回解压缩的根对象(通常是字典)。
此函数调用
load()
以执行实际工作,请参阅文档以获取关键字参数的说明。that function
从版本3.4开始不推荐使用:
load()
改为使用。在版本3.7中更改:结果中的Dict值现在是正常的dicts。您不再可以使用属性访问来访问这些词典的项目。
plistlib.
writePlist
(rootObject,pathOrFile )- 将rootObject写入XML plist文件。pathOrFile可以是文件名或(可写和二进制)文件对象
从版本3.4开始不推荐使用:
dump()
改为使用。
plistlib.
readPlistFromBytes
(数据)- 从字节对象中读取plist数据。返回根对象。
有关
load()
关键字参数的说明,请参阅。从版本3.4开始不推荐使用:
loads()
改为使用。在版本3.7中更改:结果中的Dict值现在是正常的dicts。您不再可以使用属性访问来访问这些词典的项目。
plistlib.
writePlistToBytes
(rootObject )- 将rootObject作为XML plist格式的字节对象返回。
从版本3.4开始不推荐使用:
dumps()
改为使用。
可以使用以下课程:
- class
plistlib.
Data
(数据) - 返回字节对象数据周围的“数据”包装器对象。这用于从/到plists转换的函数,以表示plist中
<data>
可用的类型。它有一个属性,
data
可用于检索存储在其中的Python字节对象。从版本3.4开始不推荐使用:
bytes
改为使用对象。
可以使用以下常量:
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"])