PythonのplistlibモジュールでMac OS Xの.plistファイルを生成・解析する方法
はじめに
拡張子が「.plist」のファイルは、Mac OS Xのアプリケーションが設定情報(プロパティ)を保存するために使用するファイルです。Pythonの標準ライブラリであるplistlibモジュールは、このプロパティリストファイルの読み書きを行うためのインターフェースを提供します。
plistファイル形式と扱えるデータ型
plistファイル形式は、辞書(dict)、リスト、数値、文字列といった基本オブジェクト型をシリアライズします。通常、最上位のオブジェクトは辞書です。
plistファイルへの書き出しと読み込み(パース)には、それぞれdump()関数とload()関数を使用します。また、シリアライズされたバイト文字列として扱いたい場合は、dumps()関数とloads()関数を使います。格納できる値は、文字列、整数、浮動小数点数、ブール値、タプル、リスト、そして辞書(キーは文字列のみ可)です。
plistlibモジュールの主な関数
| load() | 読み込み可能なバイナリファイルオブジェクトから、plistファイルを読み取ります。format引数には以下の値を指定できます。
|
| dump() | 書き込み可能なバイナリファイルオブジェクトに対して、値をplistファイルとして書き出します。fmt引数には以下のいずれかを指定します。
|
| loads() | bytesオブジェクトからplistデータを読み込みます。キーワード引数の詳細については、load()の説明を参照してください。 |
| dumps() | 値をplist形式のbytesオブジェクトとして返します。キーワード引数の詳細については、dump()のドキュメントを参照してください。 |
plistファイルへの書き込み例
次のスクリプトでは、シリアライズした辞書をplistファイルとして保存しています。
import plistlib
properties = {
"name": "Ramesh",
"College": "ABC College",
"Class": "FY",
"marks": {"phy": 60, "che": 60, "maths": 60}
}
with open('props.plist', 'wb') as fp:
plistlib.dump(properties, fp)ここでは、辞書propertiesをdump()関数で「props.plist」というファイルに書き出しています。バイナリ形式ではなくXML形式で出力したい場合は、fmt=plistlib.FMT_XMLを引数に追加してください。
plistファイルの読み込み例
保存したplistファイルを読み込むには、load()関数を使用します。
with open('props.plist', 'rb') as fp:
pl = plistlib.load(fp)
print(pl)このコードを実行すると、ファイルから読み込んだ内容が辞書として出力されます。
{'name': 'Ramesh', 'College': 'ABC College', 'Class': 'FY', 'marks': {'phy': 60, 'che': 60, 'maths': 60}}まとめ
plistlibモジュールを使えば、Mac OS Xで広く使われているplist形式のファイルを、Pythonから簡単に生成・解析できます。ファイルオブジェクトを扱うload()/dump()と、bytesオブジェクトを扱うloads()/dumps()を使い分けることで、XML形式・バイナリ形式どちらのplistファイルにも柔軟に対応できます。
-
PythonのopenpyxlモジュールでExcelファイルを読み書きする方法【初心者向け完全ガイド】
Pythonには、Excelファイル(.xlsx)を操作するためのopenpyxlという便利なモジュールが用意されています。このモジュールを使えば、Excelファイルの新規作成、データの書き込み・読み取り、シートの追加や管理など、さまざまな操作をプログラムから自動的に行うことができます。 本記事では、openpyxlの基本的な使い方を、実際に動作するサンプルコードとともに順番に解説していきます。 openpyxlのインストール方法 openpyxlは標準ライブラリではないため、まずインストールが必要です。コマンドプロンプト(またはターミナル)で以下のコマンドを実行してください。 pip ins
-
MacでPython 3にアップグレードして使いこなす方法
購入したばかりの新しいMacには、必要なソフトウェアの最新版がすべて入っていると思いがちですが、ユーザー向けアプリについては概ね正しくても、基盤となるフレームワークに関しては話が別です。安定版の最新リリースがPython 3.5であるにもかかわらず、新しいMacには今なおPython 2.7.10がプリインストールされています。バージョン間の差が大きく感じられるのはそのためです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python 3はPython 2との後方互換性を持たず、多くの開発者は依然としてPython 2を使い続けているのです。 2to3を使うか、使わないか?