Как выполнить несколько команд Windows в CMD с использованием Python в одной оболочке - PullRequest
0 голосов
/ 09 января 2019

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

import subprocess

cmd1 = 'cd C:\\Program Files (x86)\\openvpn\\bin\\'
output = subprocess.getoutput(cmd1) # it goes to the above directory

cmd2 = 'openvpn.exe --help'
output2 = subprocess.getoutput(cmd2) 

В cmd2 при запуске новая оболочка выполняет эту команду и сообщает: «openvpn.exe» не распознается как внутренняя или внешняя команда, работающая программа или командный файл.

Я хочу выполнить пару команд одну за другой и сохранить их в переменных. Поэтому я могу использовать эти переменные в других командах.

1 Ответ

0 голосов
/ 09 января 2019

Вы должны использовать метод run, например:

output = subprocess.run(['openvpn.exe', '--help'], cwd='C:\\Program Files (x86)\\openvpn\\bin\\', capture_output=True)
  • cwd = текущий рабочий каталог (где должна выполняться команда)
  • capture_output = запись потоков stdout, stderr

Затем вы можете получить доступ к своим результатам в свойствах stdout, stderr:

output.stdout  # will give you back the output of the command.

Вы не получили никаких результатов, потому что команда cd не действует в subprocess. Это связано с тем, как в первую очередь работает cd - ни один процесс не может изменить рабочий каталог другого процесса.

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