Я пытаюсь прочитать ввод от пользователя и сохранить его в переменной, используя subprocess.check_output
в python2.7. Но он показывает ошибку OSError: [Errno 2] No such file or directory
, когда я пытаюсь его запустить. Также следует отметить, что я строго хочу использовать shell=False
из-за проблем безопасности.
Я пробовал subprocess.Popen
, и это тоже не работает.
Я пытался использовать sys.stdin = open('/dev/tty', 'r')
и stdin=subprocess.PIPE
, но выдает ту же ошибку, что и выше.
>>> import sys
>>> import subprocess
>>> sys.stdin = open('/dev/tty', 'r')
>>> cmd = ('read userinput && echo "$userinput"')
>>> confirmation = subprocess.check_output(cmd.split(), stdin=sys.stdin).rstrip()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 567, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Ожидаемый результат заключается в том, что он должен запросить ввод данных пользователем и сохранить его в переменной confirmation