Вопрос по stdout, stdin, stderr – Понимание stdin stdout stderr [дубликат]

18

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

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

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

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

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

Я отредактировал ваш вопрос и удалил части Python, поскольку это не является чем-то конкретным для Python; но потом я понял, что кто-то уже ответил на вопрос в Python, поэтому я добавил строку к вашему вопросу. Все еще ненужно пометить как Python. Burhan Khalid
чтениеЭта статья отличное начало Не стесняйтесь задавать любые вопросы после этого. goncalopp
Это связано сshell не питон. Ashwini Chaudhary
@kojiro терминал - это просто приложение, которое запускает оболочку, в конце концовS оболочка, которая взаимодействует с ядром. Ashwini Chaudhary

Ваш Ответ

2   ответа
3

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

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 сразу.

я путаю:any buffered information that I've printed to go to stdout right away но печатная информация идет вstdout по умолчанию, верно? Если да, то в чем смысл?sys.stdout.flush() JinSnow
печатная информация отправляетсяstdout по умолчанию, но только когдаготов к работе Операции печати являются дорогостоящими и поэтому не требуются.Это делается мгновенно, но вместо этого информация буферизируется и затем печатается, когда система решает, что должна. Это может быть во время затишья в системе или когда естьдовольно" в буфер, чтобы идти. Путь ксила это сflush операция. Mike
Итак, ввод в командной строке назначен sys.stdout в самой программе? Alex Mollberg
@AlexMollberg - Не совсем. Вводимые вами данные в командной строке передаются работающим программам stdin поток. Вещи, которые вы печатаете, идутstdout... например строкаprint "hello" Безразлично»Скажи программе, где его распечатать, он просто идет вstdout что если у вас нетtmade любые перенаправления это терминал (отображается на мониторе) Mike
хорошо, теперь это имеет смысл. Спасибо' Alex Mollberg
6
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 значит писать

Похожие вопросы