Различие между неударом в лунку и sys.stdin

Во время сохранения информации, будьте типа, который: какие преимущества представляет неудар в лунку на sys.stdin и(или) наоборот? Поскольку я понимаю, результат - тот же самый.

3
задан 13.01.2017, 23:33
0 ответов

Стандартные streams stdin, stdout и stderr, и они представляют файлы, соединенные с вводом, выводом и выводом ошибок, у которого есть по умолчанию процесс. Наше приложение ничего не должно принимать на них, ни, что ввод был сделан клавиатурой, ни, что вывод пошел в конечную остановку... совсем не, только, что ведут себя как файлы текста, которые читаются и(или) пишут линию в линию.

Функция input у него есть два поручения:

  • показывать сообщение (в stdout)
  • читать линию текста ( stdin)

Это поведение может симулироваться следующего способа::

import sys

sys.stdout.write("Dame un número:")
sys.stdout.flush()
n = sys.stdin.readline()

что равняется в

n = input("Dame un número:")

Очевидно, гораздо более удобно использовать input что стандартные streams (То же самое происходит несмотря на то, что использует print вместо stdout). Тогда: зачем стоит использовать streams?.

Поскольку я сказал раньше, streams могут видеться как файлы и ими могут обмениваться с ними, где это было необходимо. Это простая система создания батарей доказательств фрагментов кода. Также он использован, чтобы обрабатывать вывод или ввод порожденных процессов (немного, что вытекает из темы).

Не тривиальный пример:

import sys
from io import StringIO

class WrapInput:
    def __init__(self, entrada):
        self.entrada = entrada

    def wrapper(self, f, *args, **kw):
        (sys.stdin, old_stdin) = (StringIO(self.entrada), sys.stdin)
        res = f(*args,**kw)
        sys.stdin = old_stdin
        return res

n = WrapInput("2").wrapper(input, "Dame un número: ")   
print("El número es {}".format(n))

Он не надеется на то, что ты вводишь число из-за клавиатуры, читает "2" хранение в StringIO.

Использовать input или stdin он эквивалентный. Более удобно использовать input в почти любом условии, но с stdin ты можешь делать много больше магию.

5
ответ дан 03.12.2019, 17:41

Теги

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