起因
今天遇到一個需要批量處理寫入.Plist文件的需要,一開始想直接手動寫入,考慮的內容比較多,手寫估計要1個小時,于是想是不是可以用程序員的思維去解決這個問題,怎么解決,寫個腳本唄!程序員的天職應該就是偷懶,不會偷懶的程序員不是好程序員。其實之前已經有寫過一個類似的腳本,是使用oc寫的。使用oc比較自然直接,語言也比較熟悉,但是感覺這么一個小問題,還要創建一個iOS工程太麻煩,而且拷貝文件也很不方便,需要到模擬器的沙盒里面去找文件。
那用啥呢?首先我想到的便是最近火的不要不要的腳本語言Python,Python非常簡單,有很多語法糖,可以快速的構建出強大的功能。
Code
#!/usr/bin/env python
#coding=utf-8
import os,sys
reload(sys)
sys.setdefaultencoding('utf-8')
base = '/Users/XiaoYao/Desktop/'
u = u"抱抱"
for index in range(25):
os.system('/usr/libexec/PlistBuddy -c "Set :%s:%d hug_0%02d" BigGiftList.plist'%(u, index, index+1))
心得
編碼問題
因為要使用中文字符串,必須在開頭加上
#coding=utf-8
否則會報錯,
并且需要重載系統默認編碼
import os,sys
reload(sys)
sys.setdefaultencoding('utf-8')
PlistBuddy
PlistBuddy是Mac自帶的專門解析plist的小工具
- 打印plist
/usr/libexec/PlistBuddy -c "print" info.plist
- 添加字段
/usr/libexec/PlistBuddy -c 'Add :Version string 1.0' info.plist
先添加key值
/usr/libexec/PlistBuddy -c 'Add :Application array' info.plist
# 添加value值
yans67deMacBook-Pro:needfiles huangyg$ /usr/libexec/PlistBuddy -c 'Add :Application: string app1' info.plist
yans67deMacBook-Pro:needfiles huangyg$ /usr/libexec/PlistBuddy -c 'Add :Application: string app2' info.plist
yans67deMacBook-Pro:needfiles huangyg$ /usr/libexec/PlistBuddy -c 'Add :Application: string app3' info.plist
- 刪除
/usr/libexec/PlistBuddy -c 'Delete :Version' info.plist
- 修改
/usr/libexec/PlistBuddy -c 'Set :Application:1 string "thi is app1"' info.plist
- 合并
# 將A.plist 合并到 B.plist中
/usr/libexec/PlistBuddy -c 'Merge A.plist' B.plist