You are here:  Home » Python » plistlib生成并解析Mac OS X .plist文件(5)Python文件格式(必读进阶Python教程)(参考资料)

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

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

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

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

值可以是字符串,整数,浮点数,布尔值,元组,列表,字典(但只有字符串键)Databytesbytesarray 或datetime.datetime对象。

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

也可以看看

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

该模块定义了以下功能:

plistlib.loadfp*fmt = Noneuse_builtin_types = Truedict_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.loadsdata*fmt = Noneuse_builtin_types = Truedict_type = dict 
从bytes对象加载plist。有关load()关键字参数的说明,请参阅。

版本3.4中的新功能。

plistlib.dumpvaluefp*fmt = FMT_XMLsort_keys = Trueskipkeys = 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.dumpsvalue*fmt = FMT_XMLsort_keys = Trueskipkeys = False 
返回为plist格式的字节对象。有关dump()此函数的关键字参数的说明,请参阅文档。

版本3.4中的新功能。

不推荐使用以下函数:

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

此函数调用load()以执行实际工作,请参阅文档以获取关键字参数的说明。that function

从版本3.4开始不推荐使用:load()改为使用。

在版本3.7中更改:结果中的Dict值现在是正常的dicts。您不再可以使用属性访问来访问这些词典的项目。

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

从版本3.4开始不推荐使用:dump()改为使用。

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

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

从版本3.4开始不推荐使用:loads()改为使用。

在版本3.7中更改:结果中的Dict值现在是正常的dicts。您不再可以使用属性访问来访问这些词典的项目。

plistlib.writePlistToBytesrootObject 
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"])