On this page
13.6. plistlib —生成和解析 Mac OS X .plist 文件
在 2.6 版中进行了更改:此模块以前仅在 Mac 特定的库中可用,现在可在所有平台上使用。
源代码: Lib/plistlib.py
该模块提供了一个接口,用于读取和写入主要由 Mac OS X 使用的“属性列表” XML 文件。
属性列表(.plist
)文件格式是一种简单的 XML pickle,支持基本对象类型,例如字典,列表,数字和字符串。通常,顶级对象是字典。
值可以是字符串,整数,浮点数,布尔值,Tuples,列表,字典(但仅具有字符串键),Data或datetime.datetime对象。字符串值(包括字典键)可能是 unicode 字符串-它们将以 UTF-8 格式写出。
Data类支持<data>
plist 类型。这是围绕 Python 字符串的薄包装。如果您的字符串包含控制字符,请使用Data。
See also
Apple 的文件格式文档。
该模块定义以下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 *周围返回一个“数据”包装器对象。在用于/转换成函数的函数中使用它,以表示函数中可用的
它具有一个属性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"]