2

コマンドを実行して stdout を取得するために、subprocess.popen を使用しています。

プログラム (mplayer) が eol 型\n\r. sは\r端末制御文字に由来します。\rしたがって、最終的に得られる出力は、 s が無視された非常に長い行が散在する通常の行です。

自分でファイルを開いた場合は、改行タイプを設定できます。ただし、popen から stdout を取得しているため、それを制御することはできません。

私はpython 2.7ソースを見ましたが、TextIOWrapperを使用して両方のeolタイプを尊重できると思います。しかし、私はそれに何を渡す必要があるのか​​ よくわかりません。コンストラクターに何らかのバッファーを渡す必要があることはわかっていますが、既に開いているファイルからバッファーを取得する方法がわかりません。

全体として、両方でreadline()壊れ、既に開いているファイル/ストリームが与えられたPythonでどのようにすればよいですか?\n\r

4

1 に答える 1

2

Popen.subprocess(および便利な関数で十分な場合は Popen.check_output )には、デフォルトで であるパラメーターuniversal_newlinesがありますがFalse、に設定するTrueと、すべての改行バリアントを に変換する必要がある動作が得られます\n

于 2012-10-04T21:21:49.533 に答える