MASTG-TOOL-0136: plistlib
O módulo plistlib faz parte da biblioteca padrão do Python e permite ler, modificar e gravar arquivos .plist (Property List) programaticamente. Ele suporta os formatos XML e binário de plist e fornece uma API nativa baseada em dicionários.
Isso torna o plistlib uma alternativa multiplataforma ao PlistBuddy, adequada para casos de uso de script ou automação.
Lendo um Arquivo Plist¶
O exemplo a seguir imprime o conteúdo de um arquivo plist ao carregá-lo em um dicionário Python:
import plistlib
with open("Info.plist", "rb") as f:
plist = plistlib.load(f)
print(plist)
Isso imprime uma representação em dicionário do plist, que pode ser inspecionada e modificada como qualquer outro dicionário Python.
Lendo Entradas Específicas do Plist¶
Após analisar o plist, você pode acessar chaves de dicionário e elementos de array usando a sintaxe regular do Python. O exemplo abaixo imprime o terceiro formato de ícone do aplicativo:
print(plist["CFBundleIcons~ipad"]["CFBundlePrimaryIcon"]["CFBundleIconFiles"][2])
# Saída: AppIcon-140x40
Alterando Valores do Plist¶
Para modificar uma entrada, como o CFBundleDisplayName, atribua um novo valor e grave o dicionário atualizado de volta no arquivo usando plistlib.dump:
plist["CFBundleDisplayName"] = "My New App Name"
with open("Info.plist", "wb") as f:
plistlib.dump(plist, f)
Adicionando e Excluindo Valores do Plist¶
Novas chaves podem ser adicionadas ou removidas usando operações regulares de dicionário Python:
# Adiciona um novo dicionário
plist["CustomDictionary"] = {"CustomProperty": "OWASP MAS"}
# Exclui uma chave
del plist["CustomDictionary"]["CustomProperty"]
# Salva o plist atualizado
with open("Info.plist", "wb") as f:
plistlib.dump(plist, f)