Я пытаюсь выполнить следующее на python.Пользовательские stdout и stdin для записи и чтения данных в том же модуле - Python
Способ 1 записывает выходные данные в пользовательский stdout (StringIO), из которого читается метод 2. Код идет как этот
import sys
from StringIO import StringIO
stringIOObj = StringIO()
default_stdout = sys.stdout
default_stdin = sys.stdin
sys.stdout = stringIOObj
sys.stdin = stringIOObj
def method1_write():
sys.stdout.write("Hello World\n")
sys.stdout.write("\n") #End of line
sys.stdout.flush()
def method2_read():
sys.stdout = default_stdout
for line in sys.stdin:
print line
if __name__ == "__main__":
method1_write()
method2_read()
sys.stdin = default_stdin
цель заключается в два способа общаться через пользовательский стандартный вывод и стандартный ввод. Я мог бы решить это по-другому, но я пытаюсь устранить несколько строк в командной строке, используя методы записи и чтения в том же модуле.
В этом случае, нет никакого вывода не написан
>>>
>>>
Не уверен, что не так с этим подходом, когда нет никакой ошибки выброшен, а также.
Это чище. Я буду использовать Context Manager для этих проблем. – sysuser
@sysuser Если вы используете Python 3, функция 'print' принимает аргумент ключевого слова' file', который позволяет вам писать в этот файл с печатью. Вы можете получить эту функцию, используя 'from __future__ import print_function' в Python 2. –
спасибо, что облегчит мою задачу. – sysuser