plistlib — Apple .plistファイルの生成と解析—Pythonドキュメント
plistlib — Apple .plistファイルを生成および解析します
ソースコード: :source: `Lib / plistlib.py`
このモジュールは、主にmacOSとiOSでAppleが使用する「プロパティリスト」ファイルを読み書きするためのインターフェイスを提供します。 このモジュールは、バイナリとXMLの両方のplistファイルをサポートします。
プロパティリスト(.plist
)ファイル形式は、辞書、リスト、数値、文字列などの基本的なオブジェクトタイプをサポートする単純なシリアル化です。 通常、最上位のオブジェクトは辞書です。
plistファイルを書き出して解析するには、 dump()および load()関数を使用します。
バイトオブジェクトのplistデータを操作するには、 dumps()および load()を使用します。
値には、文字列、整数、浮動小数点数、ブール値、タプル、リスト、辞書(ただし、文字列キーのみ)、 bytes 、 bytearray 、または datetime.datetime オブジェクトを指定できます。 。
バージョン3.4で変更:新しいAPI、古いAPIは非推奨。 バイナリ形式のplistのサポートが追加されました。
バージョン3.8で変更: NSKeyedArchiverおよびNSKeyedUnarchiverで使用されるバイナリplistの UID トークンの読み取りと書き込みのサポートが追加されました。
バージョン3.9で変更:古いAPIが削除されました。
このモジュールは、次の関数を定義します。
- plistlib.load(fp, *, fmt=None, dict_type=dict)
plistファイルを読み取ります。 fp は、読み取り可能なバイナリファイルオブジェクトである必要があります。 解凍されたルートオブジェクト(通常は辞書)を返します。
fmt はファイルの形式であり、次の値が有効です。
なし:ファイル形式を自動検出します
FMT_XML :XMLファイル形式
FMT_BINARY :バイナリplist形式
dict_type は、plistファイルから読み取られる辞書に使用されるタイプです。
FMT_XML 形式のXMLデータは、 xml.parsers.expat のExpatパーサーを使用して解析されます。不正な形式のXMLで発生する可能性のある例外については、そのドキュメントを参照してください。 不明な要素は、plistパーサーによって単に無視されます。
バイナリ形式のパーサーは、ファイルを解析できない場合に
InvalidFileException
を発生させます。バージョン3.4の新機能。
- plistlib.loads(data, *, fmt=None, dict_type=dict)
バイトオブジェクトからplistをロードします。 キーワード引数の説明については、 load()を参照してください。
バージョン3.4の新機能。
- plistlib.dump(value, fp, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)
value をplistファイルに書き込みます。 Fp は、書き込み可能なバイナリファイルオブジェクトである必要があります。
fmt 引数は、plistファイルの形式を指定し、次のいずれかの値になります。
FMT_XML :XML形式のplistファイル
FMT_BINARY :バイナリ形式のplistファイル
sort_keys がtrue(デフォルト)の場合、ディクショナリのキーはソートされた順序でplistに書き込まれます。それ以外の場合、ディクショナリの反復順序で書き込まれます。
skipkeys がfalse(デフォルト)の場合、辞書のキーが文字列でない場合、関数は TypeError を発生させます。それ以外の場合、そのようなキーはスキップされます。
オブジェクトがサポートされていないタイプであるか、サポートされていないタイプのオブジェクトを含むコンテナである場合、 TypeError が発生します。
OverflowError は、(バイナリ)plistファイルで表現できない整数値に対して発生します。
バージョン3.4の新機能。
- plistlib.dumps(value, *, fmt=FMT_XML, sort_keys=True, skipkeys=False)
value をplist形式のバイトオブジェクトとして返します。 この関数のキーワード引数の説明については、 dump()のドキュメントを参照してください。
バージョン3.4の新機能。
次のクラスを利用できます。
- class plistlib.UID(data)
int をラップします。 これは、UIDを含むNSKeyedArchiverでエンコードされたデータを読み書きするときに使用されます(PListのマニュアルを参照)。
これには、UIDのint値を取得するために使用できる
data
という1つの属性があります。data
は0 <= data < 2**64
の範囲内である必要があります。バージョン3.8の新機能。
次の定数を使用できます。
- plistlib.FMT_XML
plistファイルのXML形式。
バージョン3.4の新機能。
- plistlib.FMT_BINARY
plistファイルのバイナリ形式
バージョン3.4の新機能。
例
plistの生成:
pl = dict(
aString = "Doodah",
aList = ["A", "B", 12, 32.1, [1, 2, 3]],
aFloat = 0.1,
anInt = 728,
aDict = dict(
anotherString = "<hello & hi there!>",
aThirdString = "M\xe4ssig, Ma\xdf",
aTrueValue = True,
aFalseValue = False,
),
someData = b"<binary gunk>",
someMoreData = b"<lots of binary gunk>" * 10,
aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
)
with open(fileName, 'wb') as fp:
dump(pl, fp)
plistの解析:
with open(fileName, 'rb') as fp:
pl = load(fp)
print(pl["aKey"])