Понимание stdin stdout stderr [дубликат]

На этот вопрос уже есть ответ здесь:

Смущены stdin, stdout и stderr? 10 ответов

я пытаюсь понятьstdin stdout а также .stderr

Я вижу их в людяхс кодом все время, и я могуне понимаю точно, что они есть. Я предполагаю, что они имеют какое-то отношение к вводу / выводу, но искали объяснение в Интернете и могут 'найти его. Кто-нибудь знает хорошую ссылку с объяснением, или если она достаточно проста для объяснения, это мне очень поможет.

Поскольку я изучаю Python 3, примеры в этом были бы полезны.

 kojiro28 янв. 2013 г., 05:34
@AshwiniChaudhary Не оболочка,Терминал.
 goncalopp28 янв. 2013 г., 05:32
чтениеЭта статья отличное начало Не стесняйтесь задавать любые вопросы после этого.
 Ashwini Chaudhary28 янв. 2013 г., 05:29
Это связано сshell не питон.
 Ashwini Chaudhary28 янв. 2013 г., 05:46
@kojiro терминал - это просто приложение, которое запускает оболочку, в конце концовS оболочка, которая взаимодействует с ядром.
 Burhan Khalid28 янв. 2013 г., 05:44
Я отредактировал ваш вопрос и удалил части Python, поскольку это не является чем-то конкретным для Python; но потом я понял, что кто-то уже ответил на вопрос в Python, поэтому я добавил строку к вашему вопросу. Все еще ненужно пометить как Python.
 kojiro28 янв. 2013 г., 06:34
@AshwiniChaudhary Оболочка не делаетне обеспечивают стандартные потоки, и не нужнобыть вовлеченным во взаимодействие между приложением и этими потоками.

Ответы на вопрос(2)

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>
</open></open></open>

Режимr означает чтение и режимw значит писать

этот объяснить это достаточно хорошо?

sys.stdin

sys.stdout

sys.stderr

Файловые объекты, соответствующие интерпретаторуs стандартные потоки ввода, вывода и ошибок.



stdin используется для любого ввода интерпретатора, кроме скриптов, но включает вызовы input () и raw_input ().



stdout используется для вывода операторов print и expression, а также для запросов input () и raw_input ().



ПереводчикСобственные запросы и (почти все) сообщения об ошибках отправляются в stderr.

stdout и stderr needn 'быть встроенными файловыми объектами: любой объект приемлем, если у него есть метод write (), который принимает строковый аргумент.

(Изменение этих объектов неt влияет на стандартные потоки ввода / вывода процессов, выполняемых функциями os.popen (), os.system () или семейством exec * () в модуле os.)

Царапать

если я скажу оболочке Python сделать печать: "

print 'what is your name?'

как тебя зовут" будет идти кstdoutЧто бы это ни было. Если у вас нетсделал перенаправления, которыепо умолчанию терминал выповторное использование. Вы можете взаимодействовать со стандартными потоками различными способами, например:

sys.stdout.flush()

Сообщает оболочке python принудительно заставить любую буферизованную информацию, которую явеprintедь вstdout сразу.

 Alex Mollberg28 янв. 2013 г., 05:40
хорошо, теперь это имеет смысл. Спасибо'
 JinSnow26 мар. 2017 г., 14:28
я путаю:any buffered information that I've printed to go to stdout right away но печатная информация идет вstdout по умолчанию, верно? Если да, то в чем смысл?sys.stdout.flush()
 Mike19 сент. 2017 г., 15:12
печатная информация отправляетсяstdout по умолчанию, но только когдаготов к работе Операции печати являются дорогостоящими и поэтому не требуются.Это делается мгновенно, но вместо этого информация буферизируется и затем печатается, когда система решает, что должна. Это может быть во время затишья в системе или когда естьдовольно" в буфер, чтобы идти. Путь ксила это сflush операция.
 Alex Mollberg28 янв. 2013 г., 05:34
Итак, ввод в командной строке назначен sys.stdout в самой программе?
 Mike28 янв. 2013 г., 05:38
@AlexMollberg - Не совсем. Вводимые вами данные в командной строке передаются работающим программам stdin поток. Вещи, которые вы печатаете, идутstdout... например строкаprint "hello" Безразлично»Скажи программе, где его распечатать, он просто идет вstdout что если у вас нетtmade любые перенаправления это терминал (отображается на мониторе)

Ваш ответ на вопрос