チャンク— IFFチャンクデータの読み取り—Pythonドキュメント

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

chunk —IFFチャンクデータを読み取ります

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



このモジュールは、EA IFF85チャンクを使用するファイルを読み取るためのインターフェースを提供します。 1 この形式は、少なくともAudio Interchange File Format(AIFF / AIFF-C)およびReal Media File Format(RMFF)で使用されます。 WAVEオーディオファイル形式は密接に関連しており、このモジュールを使用して読み取ることもできます。

チャンクの構造は次のとおりです。

オフセット 長さ コンテンツ
0 4 チャンクID
4 4 ヘッダーを含まない、ビッグエンディアンのバイト順のチャンクのサイズ
8 n データバイト。ここで、 n は前のフィールドで指定されたサイズです。
8 + n 0または1 n が奇数で、チャンクアラインメントが使用されている場合に必要なパッドバイト

IDは、チャンクのタイプを識別する4バイトの文字列です。

サイズフィールド(ビッグエンディアンのバイトオーダーを使用してエンコードされた32ビット値)は、8バイトヘッダーを含まないチャンクデータのサイズを示します。

通常、IFFタイプのファイルは1つ以上のチャンクで構成されます。 ここで定義されている Chunk クラスの提案された使用法は、各チャンクの開始時にインスタンスをインスタンス化し、最後に到達するまでインスタンスから読み取ることです。その後、新しいインスタンスをインスタンス化できます。 ファイルの終わりで、新しいインスタンスの作成は EOFError 例外で失敗します。

class chunk.Chunk(file, align=True, bigendian=True, inclheader=False)

チャンクを表すクラス。 file 引数は、ファイルのようなオブジェクトであることが期待されています。 このクラスのインスタンスは特に許可されています。 必要な唯一の方法はread()です。 メソッド seek()および tell()が存在し、例外が発生しない場合は、それらも使用されます。 これらのメソッドが存在し、例外が発生した場合、それらはオブジェクトを変更していないと予想されます。 オプションの引数 align がtrueの場合、チャンクは2バイト境界で整列されていると見なされます。 align がfalseの場合、位置合わせは想定されません。 デフォルト値はtrueです。 オプションの引数 bigendian がfalseの場合、チャンクサイズはリトルエンディアンの順序であると見なされます。 これは、WAVEオーディオファイルに必要です。 デフォルト値はtrueです。 オプションの引数 inclheader がtrueの場合、チャンクヘッダーで指定されたサイズにはヘッダーのサイズが含まれます。 デフォルト値はfalseです。

チャンクオブジェクトは、次のメソッドをサポートします。

getname()

チャンクの名前(ID)を返します。 これは、チャンクの最初の4バイトです。

getsize()

チャンクのサイズを返します。

close()

閉じて、チャンクの最後までスキップします。 これは、基になるファイルを閉じません。

close()メソッドが呼び出された後に呼び出された場合、残りのメソッドは OSError を発生させます。 Python 3.3より前は、 IOError を発生させていましたが、現在は OSError のエイリアスになっています。

isatty()

Falseを返します。

seek(pos, whence=0)

チャンクの現在の位置を設定します。 whence 引数はオプションであり、デフォルトは0(絶対ファイル配置)です。 他の値は、1(現在の位置を基準にしてシーク)および2(ファイルの終わりを基準にしてシーク)です。 戻り値はありません。 基になるファイルがシークを許可しない場合、フォワードシークのみが許可されます。

tell()

現在の位置をチャンクに戻します。

read(size=- 1)

チャンクから最大サイズバイトを読み取ります(サイズバイトを取得する前に読み取りがチャンクの終わりに達した場合はそれより少なくなります)。 size 引数が負であるか省略されている場合は、チャンクの終わりまですべてのデータを読み取ります。 チャンクの終わりにすぐに遭遇すると、空のバイトオブジェクトが返されます。

skip()

チャンクの最後までスキップします。 チャンクに対して read()をさらに呼び出すと、bが返されます。 チャンクの内容に関心がない場合は、ファイルが次のチャンクの開始を指すように、このメソッドを呼び出す必要があります。

脚注

1
「EAIFF85」標準の交換フォーマットファイル、Jerry Morrison、Electronic Arts、1985年1月。