plistlib — Mac OS X .plistファイルの生成と解析—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/plistlib
移動先:案内検索

plistlib — Mac OS X .plistファイルを生成および解析します

ソースコード: :source: `Lib / plistlib.py`



このモジュールは、主にMac OS Xで使用される「プロパティリスト」ファイルを読み書きするためのインターフェイスを提供し、バイナリとXMLの両方のplistファイルをサポートします。

プロパティリスト(.plist)ファイル形式は、辞書、リスト、数値、文字列などの基本的なオブジェクトタイプをサポートする単純なシリアル化です。 通常、最上位のオブジェクトは辞書です。

plistファイルを書き出して解析するには、 dump()および load()関数を使用します。

バイトオブジェクトのplistデータを操作するには、 dumps()および load()を使用します。

値には、文字列、整数、浮動小数点数、ブール値、タプル、リスト、辞書(ただし、文字列キーのみ)、データバイトbytesarray、またはを指定できます。 datetime.datetime オブジェクト。

バージョン3.4で変更:新しいAPI、古いAPIは非推奨。 バイナリ形式のplistのサポートが追加されました。


バージョン3.8で変更: NSKeyedArchiverおよびNSKeyedUnarchiverで使用されるバイナリplistの UID トークンの読み取りと書き込みのサポートが追加されました。


も参照してください

PListのマニュアルページ
ファイル形式に関するAppleのドキュメント。


このモジュールは、次の関数を定義します。

plistlib.load(fp, *, fmt=None, use_builtin_types=True, dict_type=dict)

plistファイルを読み取ります。 fp は、読み取り可能なバイナリファイルオブジェクトである必要があります。 解凍されたルートオブジェクト(通常は辞書)を返します。

fmt はファイルの形式であり、次の値が有効です。

  • なし:ファイル形式を自動検出します

  • FMT_XML :XMLファイル形式

  • FMT_BINARY :バイナリplist形式

use_builtin_types がtrue(デフォルト)の場合、バイナリデータは bytes のインスタンスとして返されます。それ以外の場合は、 Data のインスタンスとして返されます。

dict_type は、plistファイルから読み取られる辞書に使用されるタイプです。

FMT_XML 形式のXMLデータは、 xml.parsers.expat のExpatパーサーを使用して解析されます。不正な形式のXMLで発生する可能性のある例外については、そのドキュメントを参照してください。 不明な要素は、plistパーサーによって単に無視されます。

バイナリ形式のパーサーは、ファイルを解析できない場合にInvalidFileExceptionを発生させます。

バージョン3.4の新機能。

plistlib.loads(data, *, fmt=None, use_builtin_types=True, 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の新機能。

次の関数は非推奨です。

plistlib.readPlist(pathOrFile)

plistファイルを読み取ります。 pathOrFile は、ファイル名または(読み取り可能でバイナリの)ファイルオブジェクトのいずれかです。 解凍されたルートオブジェクト(通常は辞書)を返します。

この関数は load()を呼び出して実際の作業を行います。キーワード引数の説明については、その関数のドキュメントを参照してください。

バージョン3.4以降非推奨:代わりに load()を使用してください。

バージョン3.7で変更:結果のディクト値は通常のディクトになりました。 属性アクセスを使用してこれらのディクショナリのアイテムにアクセスすることはできなくなりました。

plistlib.writePlist(rootObject, pathOrFile)

rootObject をXMLplistファイルに書き込みます。 pathOrFile は、ファイル名または(書き込み可能でバイナリの)ファイルオブジェクトのいずれかです。

バージョン3.4以降非推奨:代わりに dump()を使用してください。

plistlib.readPlistFromBytes(data)

バイトオブジェクトからplistデータを読み取ります。 ルートオブジェクトを返します。

キーワード引数の説明については、 load()を参照してください。

バージョン3.4以降非推奨:代わりに loads()を使用してください。

バージョン3.7で変更:結果のディクト値は通常のディクトになりました。 属性アクセスを使用してこれらのディクショナリのアイテムにアクセスすることはできなくなりました。

plistlib.writePlistToBytes(rootObject)

rootObject をXMLplist形式のバイトオブジェクトとして返します。

バージョン3.4以降非推奨:代わりに dumps()を使用してください。

次のクラスを利用できます。

class plistlib.Data(data)

バイトオブジェクト data の周りに「データ」ラッパーオブジェクトを返します。 これは、plistで使用可能な<data>タイプを表すために、plistとの間で変換する関数で使用されます。

これには、dataという1つの属性があり、そこに格納されているPythonバイトオブジェクトを取得するために使用できます。

バージョン3.4以降非推奨:代わりに bytes オブジェクトを使用してください。

class plistlib.UID(data)

int をラップします。 これは、UIDを含むNSKeyedArchiverでエンコードされたデータを読み書きするときに使用されます(PListのマニュアルを参照)。

これには、UIDのint値を取得するために使用できるdataという1つの属性があります。 data範囲内である必要があります 0 <=データ<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"])