mattintosh note

どこかのエンジニアモドキの備忘録

Python で Plist を解析する

Plist の解析は /usr/libexec/PlistBuddy でも可能だが一時ファイルが必要になる。Python の plistlib は文字列からも解析ができるので一時ファイルが不要。

import subprocess
import plistlib

# plist を取得
plist = subprocess.Popen(["system_profiler", "-xml", "SPDisplaysDataType"], stdout=subprocess.PIPE).communicate()[0]

# plist を辞書に変換
plist = plistlib.readPlistFromString(plist)

# 値の出力
print plist[0]["_items"][0]["spdisplays_vram"]
# => '256 MB'

標準入力からの場合。

system_profiler -xml SPDisplaysDataType | python -c 'import sys, plistlib; print plistlib.readPlist(sys.stdin)[0]["_items"][0]["spdisplays_vram"]'
# => 256 MB

解析だけではなく生成も可能。

http://docs.python.jp/2/library/plistlib.html

Pythonスタートブック

Pythonスタートブック

初めてのPython 第3版

初めてのPython 第3版

Mac OS X Mountain Lionマスターブック (Mac Fan Books)

Mac OS X Mountain Lionマスターブック (Mac Fan Books)