13.6. plistlib —生成和解析 Mac OS X .plist 文件

在 2.6 版中进行了更改:此模块以前仅在 Mac 特定的库中可用,现在可在所有平台上使用。

源代码: Lib/plistlib.py


该模块提供了一个接口,用于读取和写入主要由 Mac OS X 使用的“属性列表” XML 文件。

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

值可以是字符串,整数,浮点数,布尔值,Tuples,列表,字典(但仅具有字符串键),Datadatetime.datetime对象。字符串值(包括字典键)可能是 unicode 字符串-它们将以 UTF-8 格式写出。

Data类支持<data> plist 类型。这是围绕 Python 字符串的薄包装。如果您的字符串包含控制字符,请使用Data

See also

该模块定义以下Function:

  • plistlib. readPlist(* pathOrFile *)
    • 读取 plist 文件。 * pathOrFile *可以是文件名或(可读)文件对象。返回解压缩的根对象(通常是字典)。

使用来自xml.parsers.expat的 Expat 解析器解析 XML 数据–有关格式错误的 XML 的可能异常,请参阅其文档。 plist 解析器将忽略未知的元素。

  • plistlib. writePlist(* rootObject pathOrFile *)
    • 将* rootObject *写入 plist 文件。 * pathOrFile *可以是文件名,也可以是(可写)文件对象。

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

  • plistlib. readPlistFromString(* data *)

    • 从字符串中读取一个 plist。返回根对象。
  • plistlib. writePlistToString(* rootObject *)

    • 返回* rootObject *作为 plist 格式的字符串。
  • plistlib. readPlistFromResource(* path restype ='plst' resid = 0 *)

    • 从* path 的资源分支读取类型为 restype *的资源中的 plist。可用性:Mac OSX。

Note

在 Python 3.x 中,此Function已被删除。

  • plistlib. writePlistToResource(* rootObject path restype ='plst' resid = 0 *)
    • 将* rootObject 作为类型为 restype 的资源写入 path *的资源派生。可用性:Mac OSX。

Note

在 Python 3.x 中,此Function已被删除。

可以使用以下类:

  • 类别 plistlib. Data(数据)
    • 在字符串* data *周围返回一个“数据”包装器对象。在用于/转换成函数的函数中使用它,以表示函数中可用的<data>类型。

它具有一个属性data,可用于检索存储在其中的 Python 字符串。

13.6.1. 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!>",
        aUnicodeValue=u'M\xe4ssig, Ma\xdf',
        aTrueValue=True,
        aFalseValue=False,
    ),
    someData = Data("<binary gunk>"),
    someMoreData = Data("<lots of binary gunk>" * 10),
    aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
# unicode keys are possible, but a little awkward to use:
pl[u'\xc5benraa'] = "That was a unicode key."
writePlist(pl, fileName)

解析一个 plist:

pl = readPlist(pathOrFile)
print pl["aKey"]