1. 程式人生 > >python讀寫plist資料

python讀寫plist資料

1 關於 plist 檔案

通俗一句話介紹: mac os和ios中的一種二進位制的XML配置檔案 

更準確詳細的介紹: 參考 “IOS plist檔案   http://www.cnblogs.com/geraldzhang/archive/2011/08/24/2152121.html  ” 

2 在 mac os和ios開發比如cocoa 中,非常好讀寫plist檔案,參考1中提到的文章即可。 

現在有這樣一個應用場景: ios app的打包檔案.ipa中,使用plist檔案儲存了一些配置,每次釋出之前需要標記版本、渠道等資訊,渠道可能有N多個,所以需要在釋出流程中根據渠道配置來分別更新plist檔案中的某個或某幾個key的值,以實現新版本的多渠道分發。

比如這裡我們選用python指令碼實現釋出功能:

3.1 流程: .ipa包是標準zip包,所以直接zip解壓,然後找到plist檔案,讀入,找到相應key,更新value,寫到另一個檔案,然後刪除舊的,再重新命名。

3.2 python 實現? 

python讀寫plist檔案,參考這裡 “ Python module for binary plist  http://stackoverflow.com/questions/3725268/python-module-for-binary-plist  ” 

筆者最後選擇了 biplist 專案 : https://github.com/wooster/biplist  

<span style="margin: 0px; padding: 0px; ">Plist generation example:</span>

from biplist import *
from datetime import datetime
plist = {'aKey':'aValue',
         '0':1.322,
         'now':datetime.now(),
         'list':[1,2,3],
         'tuple':('a','b','c')
         }
try:
    writePlist(plist, "example.plist")
except (InvalidPlistException, NotBinaryPlistException), e:
    print "Something bad happened:", e

<span style="margin: 0px; padding: 0px; ">Plist parsing example:</span>

from biplist import *
try:
    plist = readPlist("example.plist")
    print plist
except (InvalidPlistException, NotBinaryPlistException), e:
    print "Not a plist:", e