在開發IOS下程序的時候因為常常使用plist(屬性表文件)配置一些數據,當數據多的時候手工修改特定一項數值必然是一個枯燥無聊的體力活,下面介紹如何使用python讀取plist文件並且進行修改保存的。
1、安裝 python下的plist庫--biplist 和簡單使用
在終端下:
applematoMacBook-Pro:~ apple$ sudo easy_install biplist
完成安裝之后,編寫簡單寫入plist和讀取plist的文件代碼
1)寫入一個plist
#!/usr/bin/python # -*- coding:utf-8 -*- from biplist import * from datetime import datetime plist ={ 'aKey':'aValue', '0':1.322, 'now':datetime.now(), 'list':[1,2,3], 'tuple':('a','b','c'), 'dict':{'list':1234,'aKey':11111} } try: writePlist(plist,"demo.plist") except (InvalidPlistException,NotBinaryPlistException), e: print "Something bad happened:",e else: pass finally: pass
from biplist import * #導入biplist庫
plist ={ 'aKey':'aValue', #構建下一個字典 '0':1.322, 'now':datetime.now(), 'list':[1,2,3], 'tuple':('a','b','c'), 'dict':{'list':1234,'aKey':11111} }
writePlist(plist,"demo.plist")#調用biplist的writePlist進行保存,對應plist保存在當前python腳本同一目錄下.
2)讀取一個plist
1 #!usr/bin/python 2 # -*- coding:utf-8 -*- 3 from biplist import * 4 5 try: 6 plist = readPlist("demo.plist"); 7 print plist 8 print plist['list']; 9 dictlist=plist['dict']; 10 print dictlist['aKey']; 11 12 except InvalidPlistException, e: 13 print "Not a Plist or Plist Invalid:",e
plist = readPlist("demo.plist");#調用biplist庫的readPlist函數,返回的是一個字典
print plist['list']; #打印出list鍵對應的數組
dictlist=plist['dict']; #獲取dict對應的字典
print dictlist['aKey']; #打印字典內的aKey數據
2、修改plist
1 #!usr/bin/python 2 # -*- coding:utf-8 -*- 3 from biplist import * 4 5 try: 6 plist = readPlist("demo.plist"); 7 print plist 8 print plist['dict']; 9 dictlist=plist['dict']; 10 print dictlist['aKey']; 11 12 except InvalidPlistException, e: 13 print "Not a Plist or Plist Invalid:",e 14 15 #修改plist 16 dictlist['aKey']=33333; 17 dictlist['list']=22222; 18 19 try: 20 writePlist(plist,"demo.plist") 21 except (InvalidPlistException,NotBinaryPlistException), e: 22 print "Something bad happened:",e
#修改plist dictlist['aKey']=33333; dictlist['list']=22222;
對指定的字典修改,然后保存。writePlist(plist,"demo.plist") 這時修改后plist會覆蓋掉原有的那個demo.plist文件。
3.疑問
在使用biplist的過程中如果.plist中有中文時,修改后保存出現內容是亂碼(XCode中查看源碼方式),但是數據本身格式是正常。不知到有朋友可以解釋嗎。