Как мне запустить процесс и игнорировать все пользовательские запросы? - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь автоматизировать монтирование и размонтирование UNC дисков с помощью Python в Windows.Я использую модуль subprocess для выполнения различных команд, чтобы я мог записывать их вывод.Однако команда NET USE иногда запрашивает ввод данных пользователем (например, пароль).Обычно все работает хорошо, но поскольку я использую subprocess.communicate(), моя программа зависает на неопределенное время, когда NET USE запрашивает мой «подпроцесс» для ввода.Конечно, я понятия не имею, что он просит ввода.Он просто сидит и ждет терпеливо и расстраивает меня.

Это более общая проблема, чем просто NET USE, поэтому, пожалуйста, не идите по этому пути.Есть другие случаи, когда какая-то (другая) программа запрашивает ввод, и моя программа зависает.Есть мысли?

1 Ответ

1 голос
/ 21 марта 2012

Некоторые программы умны и понимают, что если у пользователя нет возможности что-либо ввести, он даже не должен спрашивать. Для таких программ вы можете добавить «stdin = open ('/ dev / null')» в подпроцесс. Параметры открытия.

В более сложном случае, когда программа действительно настаивает на взаимодействии, все, что вы можете сделать, это обеспечить взаимодействие самостоятельно.

РЕДАКТИРОВАТЬ: я должен отметить, что библиотека pexpect является отличным способом сделать такое взаимодействие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...