7.5.1 ファイルオブジェクト (file object)

Python の組み込みファイルオブジェクトは、全て標準 C ライブラリの FILE* サポートの上に実装されています。以下の詳細説明は 一実装に関するもので、将来の Python のリリースで変更されるかも しれません。

PyFileObject
この PyObject のサブタイプは Python のファイル型オブジェクトを 表現します。

PyTypeObject PyFile_Type
この PyTypeObject のインスタンスは Python のファイル型を 表現します。このオブジェクトは types.FileType として Python プログラムで公開されています。

int PyFile_Check(PyObject *p)
引数が PyFileObjectPyFileObject のサブタイプのときに真を返します。 バージョン 2.2 で 変更 された仕様: サブタイプを引数にとれるようになりました

int PyFile_CheckExact(PyObject *p)
引数が PyFileObject 型で、かつ PyFileObject 型のサブタイプでないときに真を返します。 バージョン 2.2 で 新たに追加 された仕様です。

PyObject* PyFile_FromString(char *filename, char *mode)
戻り値: 新たな参照.
成功すると、filename に指定した名前のファイルを mode に 指定したファイルモードで開いて得た新たなファイルオブジェクトを返します。 mode のセマンティクスは標準 C ルーチン fopen() と同じです。失敗するとNULL を返します。

PyObject* PyFile_FromFile(FILE *fp, char *name, char *mode, int (*close)(FILE*))
戻り値: 新たな参照.
すでに開かれている標準 C ファイルポインタ fp から 新たな PyFileObject を生成します。この関数で生成した ファイルオブジェクトは、閉じる際にclose に指定した関数を 呼び出します。失敗するとNULLを返します。

FILE* PyFile_AsFile(PyFileObject *p)
p に関連付けられたファイルオブジェクトを FILE* で返します。

PyObject* PyFile_GetLine(PyObject *p, int n)
戻り値: 新たな参照.
p.readline([n]) と同じで、この関数は オブジェクト p の各行を読み出します。 p は ファイルオブジェクトか、readline() メソッドを持つ 何らかのオブジェクトでかまいません。n0 の場合、 行の長さに関係なく正確に 1 行だけ読み出します。n0 より大きければ、n バイト以上のデータは 読み出しません; 従って、行の一部だけが返される場合があります。 どちらの場合でも、読み出し後すぐにファイルの終端に到達した場合には 空文字列を返します。n0 より小さければ、長さに 関わらず 1 行だけを読み出しますが、すぐにファイルの終端に到達した 場合には EOFError を送出します。

PyObject* PyFile_Name(PyObject *p)
戻り値: 借りた参照.
p に指定したファイルの名前を文字列オブジェクトで 返します。

void PyFile_SetBufSize(PyFileObject *p, int n)
setvbuf() があるシステムでのみ 利用できます。この関数を呼び出してよいのはファイルオブジェクトの 生成直後のみです。

int PyFile_Encoding(PyFileObject *p, char *enc)
Unicode オブジェクトをファイルに出力するときにのエンコード方式を enc にします。成功すると 1 を、失敗すると 0 を返します。 バージョン 2.3 で 新たに追加 された仕様です。

int PyFile_SoftSpace(PyObject *p, int newflag)
この関数はインタプリタの内部的な利用のために存在します。 この関数はpsoftspace 属性を newflag に 設定し、以前の設定値を返します。この関数を正しく動作させるために、 p がファイルオブジェクトである必然性はありません; 任意の オブジェクトをサポートします (softspace 属性が設定 されているかどうかのみが問題だと思ってください)。 この関数は全てのエラーを解消し、属性値が存在しない場合や属性値を 取得する際にエラーが生じると、0 を以前の値として返します。 この関数からはエラーを検出できませんが、そもそもそういう必要は ありません。

int PyFile_WriteObject(PyObject *obj, PyFileObject *p, int flags)
オブジェクト obj をファイルオブジェクト p に書き込みます。 flag がサポートするフラグは Py_PRINT_RAW だけです; このフラグ を指定すると、 オブジェクトにrepr() ではなく str() を適用した結果をファイルに書き出します。 成功した場合には 0 を返し、失敗すると -1 を返して 適切な例外をセットします。

int PyFile_WriteString(const char *s, PyFileObject *p)
文字列 s をファイルオブジェクト p に書き出します。 成功した場合には 0 を返し、失敗すると -1 を返して 適切な例外をセットします。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。