python REPL I で、個別に呼び出されos.close
た with と、0
標準入力、出力、およびエラーであるとします。それらを再開/再初期化するにはどうすればよいですか? 関数またはコードブロックの開始時にそれらを閉じ、戻る前に再度開くようにします。1
2
PS: python 固有の詳細と一般的な詳細の両方をいただければ幸いです。
python REPL I で、個別に呼び出されos.close
た with と、0
標準入力、出力、およびエラーであるとします。それらを再開/再初期化するにはどうすればよいですか? 関数またはコードブロックの開始時にそれらを閉じ、戻る前に再度開くようにします。1
2
PS: python 固有の詳細と一般的な詳細の両方をいただければ幸いです。
それらを閉じてから再度開くことはできませんが、完了したら複製して以前の値を復元できます。このようなもの;
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)