Python3 subprocess.run – как печатать/захватывать выходные данные (stdout, stderr), а также разрешать ввод пользователя Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python3 subprocess.run – как печатать/захватывать выходные данные (stdout, stderr), а также разрешать ввод пользователя

Сообщение Anonymous »

Для удобства я пытаюсь создать функцию, которая может запускать команды bash из Python. Я хотел бы вывести любой стандартный вывод, а также сохранить все стандартные выходные данные/стандартный вывод для справки. Однако, похоже, я сталкиваюсь с проблемами, когда задействован пользовательский ввод. В следующем примере стандартный вывод не выводится (вообще ничего не отображается) до тех пор, пока не будет нажата клавиша Enter, что немедленно пропускает стандартный ввод.
Установка подпроцесса stdin=subprocess.PIPE не помогает, это пропускает полностью любой ввод пользователя
import subprocess

def run_command(command):
result = {}
try:
process = subprocess.run(
command,
shell=True,
stdin=None, #setting to subprocess.PIPE skips userinput entirely
stdout=None,
stderr=None,
universal_newlines=True,
capture_output=True
)

result = {
"returncode": process.returncode,
"stdout": process.stdout,
"stderr": process.stderr
}

#when a command requests userinput, this doesn't seem to print UNTIL enter is hit
print(process.stdout)

except Exception as e:
print(f"Exception occurred: {e}")

return result

#Example: has an issue when run a second time, because stdin for existing file overwrite
result = run_command(f"ssh-keygen -t ed25519 -N '' -f ./ssh_key_test")
print(result)



Подробнее здесь: https://stackoverflow.com/questions/790 ... while-also
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»