web-dev-qa-db-ja.com

stdin stdoutstderrを理解する

stdinstdoutstderrを理解しようとしています。

私はそれらが人々のコードで常に使用されているのを見て、それらが何であるかを正確に理解することはできません。入出力と関係があると思いますが、オンラインで説明を探していて見つかりません。誰かが説明との良いリンクを知っていますか、それが説明するのに十分簡単であるならば、それは私にとって大きな助けになるでしょう。

私はPython 3を学んでいるので、その例が役に立ちます。

19
Alex Mollberg
_sys.stdin
sys.stdout
sys.stderr
_

標準入力、出力、およびエラーのためにインタプリタによって使用されるファイルオブジェクト:

  • stdinは、すべての対話型入力(input()の呼び出しを含む)に使用されます。

  • stdoutは、print()および式ステートメントの出力、およびinput()のプロンプトに使用されます。

  • インタプリタ自身のプロンプトとそのエラーメッセージはstderrに送られます。

あなたのより多くの理解のために:

_>>> import sys
>>> for i in (sys.stdin, sys.stdout, sys.stderr):
...     print i
... 
<open file '<stdin>', mode 'r' at 0x103451150>
<open file '<stdout>', mode 'w' at 0x1034511e0>
<open file '<stderr>', mode 'w' at 0x103451270>
_

モードrは読み取りを意味し、モードwは書き込みを意味します

6
Suku

this それを十分に説明していますか?

sys.stdin
sys.stdout
sys.stderr
インタプリタの標準入力、出力、およびエラーストリームに対応するファイルオブジェクト。

stdinは、スクリプトを除くすべてのインタープリター入力に使用されますが、input()およびraw_input()の呼び出しも含まれます。

stdoutは、printステートメントとexpressionステートメントの出力、およびinput()とraw_input()のプロンプトに使用されます。

インタプリタ自身のプロンプトと(ほとんどすべての)エラーメッセージはstderrに送られます。
stdoutとstderrは、組み込みのファイルオブジェクトである必要はありません。文字列引数をとるwrite()メソッドがあれば、どのオブジェクトでもかまいません。
(これらのオブジェクトを変更しても、osモジュールのos.popen()、os.system()、またはexec *()ファミリーの関数によって実行されるプロセスの標準I/Oストリームには影響しません。)

明確にするために

python Shellに印刷を行うように指示した場合:

print 'what is your name?'

「あなたの名前は何ですか」は、それが何であれ、stdoutに移動します。デフォルトで使用している端末であるリダイレクトを行っていない場合。たとえば、次のようなさまざまな方法で標準ストリームを操作できます。

sys.stdout.flush()

python Shellに、printedしたバッファリングされた情報をすぐにstdoutに移動するように指示します。

3
Mike