plistlib
— Generate and parse Mac OS X .plist
files¶
Código-fonte: Lib/plistlib.py
This module provides an interface for reading and writing the “property list” files used mainly by Mac OS X and supports both binary and XML plist files.
O formato de arquivo de lista de propriedades (.plist
) é uma serialização simples que oferece suporte a tipos básicos de objetos, como dicionários, listas, números e strings. Normalmente, o objeto de nível superior é um dicionário.
Para escrever e analisar um arquivo plist, use as funções dump()
e load()
.
To work with plist data in bytes objects, use dumps()
and loads()
.
Values can be strings, integers, floats, booleans, tuples, lists, dictionaries
(but only with string keys), Data
, bytes
, bytesarray
or datetime.datetime
objects.
Alterado na versão 3.4: Nova API, API antiga descontinuada. Suporte para plists de formato binário adicionado.
Alterado na versão 3.8: Adicionado suporte para leitura e escrita de tokens UID
em plists binários, conforme usado por NSKeyedArchiver e NSKeyedUnarchiver.
Ver também
- PList manual page
Documentação da Apple sobre o formato de arquivo.
Este módulo define as seguintes funções:
-
plistlib.
load
(fp, *, fmt=None, use_builtin_types=True, dict_type=dict)¶ Lê um arquivo plist. fp deve ser um objeto arquivo binário e legível. Retorna o objeto raiz desempacotado (que geralmente é um dicionário).
fmt é o formato do arquivo e os seguintes valores são válidos:
None
: Detecta automaticamente o formato do arquivoFMT_XML
: Formato de arquivo XMLFMT_BINARY
: Formato binário plist
If use_builtin_types is true (the default) binary data will be returned as instances of
bytes
, otherwise it is returned as instances ofData
.O dict_type é o tipo usado para dicionários que são lidos do arquivo plist.
Dados XML para o formato
FMT_XML
são analisados usando o analisador sintático Expat dexml.parsers.expat
– veja sua documentação para possíveis exceções em XML malformado. Elementos desconhecidos serão simplesmente ignorados pelo analisador de plist.O analisador sintático para o formato binário levanta
InvalidFileException
quando o arquivo não pode ser analisado.Novo na versão 3.4.
-
plistlib.
loads
(data, *, fmt=None, use_builtin_types=True, dict_type=dict)¶ Load a plist from a bytes object. See
load()
for an explanation of the keyword arguments.Novo na versão 3.4.
-
plistlib.
dump
(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)¶ Escreve value em um arquivo plist. Fp deve ser um objeto arquivo binário gravável.
O argumento fmt especifica o formato do arquivo plist e pode ser um dos seguintes valores:
FMT_XML
: Arquivo plist formatado em XMLFMT_BINARY
: Arquivo plist formatado em binário
Quando sort_keys é verdadeiro (o padrão), as chaves dos dicionários serão escritas ordenadas no plist, caso contrário, elas serão escritas na ordem de iteração do dicionário.
Quando skipkeys é falso (o padrão), a função levanta
TypeError
quando uma chave de um dicionário não é uma string, caso contrário, tais chaves são ignoradas.Uma
TypeError
será levantada se o objeto for de um tipo não suportado ou um contêiner que contém objetos de tipos não suportados.Uma
OverflowError
será levantada para valores inteiros que não podem ser representados em arquivos plist (binários).Novo na versão 3.4.
-
plistlib.
dumps
(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)¶ Retorna value como um objeto bytes formatado em plist. Veja a documentação para
dump()
para uma explicação dos argumentos nomeados desta função.Novo na versão 3.4.
The following functions are deprecated:
-
plistlib.
readPlist
(pathOrFile)¶ Read a plist file. pathOrFile may be either a file name or a (readable and binary) file object. Returns the unpacked root object (which usually is a dictionary).
This function calls
load()
to do the actual work, see the documentation ofthat function
for an explanation of the keyword arguments.Obsoleto desde a versão 3.4: Use
load()
.Alterado na versão 3.7: Dict values in the result are now normal dicts. You no longer can use attribute access to access items of these dictionaries.
-
plistlib.
writePlist
(rootObject, pathOrFile)¶ Write rootObject to an XML plist file. pathOrFile may be either a file name or a (writable and binary) file object
Obsoleto desde a versão 3.4: Use
dump()
instead.
-
plistlib.
readPlistFromBytes
(data)¶ Read a plist data from a bytes object. Return the root object.
See
load()
for a description of the keyword arguments.Obsoleto desde a versão 3.4: Use
loads()
instead.Alterado na versão 3.7: Dict values in the result are now normal dicts. You no longer can use attribute access to access items of these dictionaries.
-
plistlib.
writePlistToBytes
(rootObject)¶ Return rootObject as an XML plist-formatted bytes object.
Obsoleto desde a versão 3.4: Use
dumps()
instead.
As seguintes classes estão disponíveis:
-
class
plistlib.
Data
(data)¶ Return a “data” wrapper object around the bytes object data. This is used in functions converting from/to plists to represent the
<data>
type available in plists.It has one attribute,
data
, that can be used to retrieve the Python bytes object stored in it.Obsoleto desde a versão 3.4: Use a
bytes
object instead.
-
class
plistlib.
UID
(data)¶ Envolve um
int
. Isso é usado ao ler ou escrever dados codificados NSKeyedArchiver, que contém UID (veja o manual de PList).It has one attribute,
data
, which can be used to retrieve the int value of the UID.data
must be in the range 0 <= data < 2**64.Novo na versão 3.8.
As seguintes constantes estão disponíveis:
-
plistlib.
FMT_XML
¶ O formato XML para arquivos plist.
Novo na versão 3.4.
-
plistlib.
FMT_BINARY
¶ O formato binário para arquivos plist
Novo na versão 3.4.
Exemplos¶
Gerando um 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)
Analisando um plist:
with open(fileName, 'rb') as fp:
pl = load(fp)
print(pl["aKey"])