0

python REPL I で、個別に呼び出されos.closeた with と、0標準入力、出力、およびエラーであるとします。それらを再開/再初期化するにはどうすればよいですか? 関数またはコードブロックの開始時にそれらを閉じ、戻る前に再度開くようにします。12

PS: python 固有の詳細と一般的な詳細の両方をいただければ幸いです。

4

1 に答える 1

2

それらを閉じてから再度開くことはできませんが、完了したら複製して以前の値を復元できます。このようなもの;

copy_of_stdin  = os.dup(0)  // Duplicate stdin  to a new descriptor
copy_of_stdout = os.dup(1)  // Duplicate stdout to a new descriptor
copy_of_stderr = os.dup(2)  // Duplicate stderr to a new descriptor
os.closerange(0,2)          // Close stdin/out/err

...redirect stdin/out/err at will...

os.dup2(copy_of_stdin,  0)  // Restore stdin
os.dup2(copy_of_stdout, 1)  // Restore stdout
os.dup2(copy_of_stderr, 2)  // Restore stderr
os.close(copy_of_stdin)     // Close the copies
os.close(copy_of_stdout)
os.close(copy_of_stderr)
于 2013-04-28T15:26:44.310 に答える