1

質問:

Python 2.5 の StringIO のように機能するバイト ストリームを取得するにはどうすればよいですか?

応用:

PDF をテキストに変換していますが、ファイルをハードディスクに保存したくありません。

他の考え:

StringIO を使用できると考えましたが、モード パラメータはありません (「String」はテキスト モードを意味すると思います)。

どうやら io.BytesIO クラスは v2.6 で新しく追加されたようで、これもうまくいきません。

tempfile モジュールを使用した解決策がありますが、ハードディスクへの読み取り/書き込みは避けたいと思います。

4

2 に答える 2

4

Python 2.x では、「文字列」は「バイト」を意味し、「ユニコード」は「文字列」を意味します。StringIOまたはcStringIOモジュールを使用する必要があります。モードは、バッファ パラメータとして渡すデータの種類によって異なります。

于 2009-08-14T17:55:49.247 に答える
2

PDF を使用している場合は、次StringIOのドキュメントに注意を払っていれば問題ありません。

StringIO オブジェクトは、Unicode または 8 ビット文字列のいずれかを受け入れることができますが、2 つを混在させるには注意が必要です。両方を使用すると、7 ビット ASCII として解釈できない (8 番目のビットを使用する) 8 ビット文字列によって、getvalue() が呼び出されたときに UnicodeError が発生します。

これは次の場合には当てはまらないcStringIOことに注意してください。

StringIO モジュールによって実装されるメモリ ファイルとは異なり、このモジュールによって提供されるメモリ ファイルは、プレーンな ASCII 文字列としてエンコードできない Unicode 文字列を受け入れることができません。

次の場所で完全なドキュメントを参照してください。

于 2009-08-14T17:58:23.390 に答える