##
2 ファイルオブジェクトの生成

以下の関数は新しいファイルオブジェクトを作成します。

`fdopen`( | fd[, mode[, bufsize]])

  ファイル記述子 fd に接続している、開かれた ファイルオブジェクトを返します。 引数 mode および bufsize は、組み込み関数 `open()` における対応する引数と同じ意味を持ちます。 利用できる環境: Macintosh、 Unix、Windows バージョン 2.3 で 変更 された仕様: 引数 mode は、指定されるならば、 "`r`"、 "`w`"、 "`a`" のいずれかの文字で始まらなければなりません。 そうでなければ `ValueError` が送出されます バージョン 2.5 で 変更 された仕様: Unixでは、引数 mode が "`a`" で始まる時には O_APPEND フラグがファイル記述子に設定されます。 (ほとんどのプラットフォームで `fdopen()` 実装が既に行なっていることです)

`popen`( | command[, mode[, bufsize]])

  command への、または command からのパイプ入出力を開きます。 戻り値はパイプに接続されている開かれたファイルオブジェクトで、 mode が `'r'` (標準の設定です) または `'w'` かに よって読み出しまたは書き込みを行うことができます。 引数 bufsize は、組み込み関数 `open()` における対応する引数と同じ意味を持ちます。 command の終了ステータス (`wait()` で指定された書式でコード化 されています) は、`close()` メソッドの戻り値として取得することが できます。例外は終了ステータスがゼロ (すなわちエラーなしで終了) の 場合で、このときには `None` を返します。 利用できる環境: Macintosh、Unix、Windows

  バージョン 2.0 で 変更 された仕様: この関数は、Pythonの初期のバージョンでは、 Windows環境下で信頼できない動作をしていました。これはWindowsに付属 して提供されるライブラリの `_popen()` 関数を利用したことに よるものです。新しいバージョンの Python では、Windows 付属のライブラリ にある壊れた実装を利用しません

`tmpfile`( | )

  更新モード("`w+b`")で開かれた新しいファイルオブジェクトを返します。 このファイルはディレクトリエントリ登録に関連付けられておらず、 このファイルに対するファイル記述子がなくなると自動的に削除されます。 利用できる環境: Macintosh、Unix、Windows

以下の `popen()` の変種はどれも、bufsize が指定されている場合には I/O パイプのバッファサイズを表します。 mode を指定する場合には、文字列 `'b'` または `'t'` でなければなりません; これは、Windows でファイルをバイナリモードで開くか テキストモードで開くかを決めるために必要です。 mode の標準の 設定値は`'t'` です。

またUnixではこれらの変種はいずれも cmd をシーケンスにできます。その場合、 引数はシェルの介在なしに直接 (`os.spawnv()` のように) 渡されます。 cmd が文字列の場合、引数は( `os.system()` のように) シェルに渡されます。

以下のメソッドは子プロセスから終了ステータスを取得できるようには していません。入出力ストリームを制御し、かつ終了コードの取得も 行える唯一の方法は、 `popen2` モジュールの `Popen3` と `Popen4` クラスを利用する事です。これらは Unix上でのみ利用可能です。

これらの関数の利用に関係して起きうるデッドロック状態についての議論は、 ``フロー制御問題'' (section 17.4.2) を参照してください。

`popen2`( | cmd[, mode[, bufsize]])

  cmd を子プロセスとして実行します。ファイル・オブジェクト `(child_stdin, child_stdout)` を返します。 利用できる環境: Macintosh、Unix、Windows バージョン 2.0 で 新たに追加 された仕様です。

`popen3`( | cmd[, mode[, bufsize]])

  cmd を子プロセスとして実行します。ファイルオブジェクト `(child_stdin, child_stdout, child_stderr)` を 返します。 利用できる環境: Macintosh、Unix、Windows バージョン 2.0 で 新たに追加 された仕様です。

`popen4`( | cmd[, mode[, bufsize]])

  cmd を子プロセスとして実行します。ファイルオブジェクト `(child_stdin, child_stdout_and_stderr)` を返します。 利用できる環境: Macintosh、Unix、Windows バージョン 2.0 で 新たに追加 された仕様です。

(`child_stdin, child_stdout, および child_stderr` は子プロセスの視点で名付けられているので注意してください。 すなわち、child_stdin とは子プロセスの標準入力を意味します。)

この機能は `popen2` モジュール内の同じ名前の関数 を使っても実現できますが、これらの関数の戻り値は異なる順序を持ってい ます。