Как мы можем взаимодействовать с оболочкой ОС с помощью Python? Я хочу запустить команды windows cmd через python. Как это можно достичь?
Запуск команд оболочки Windows с помощью python
Ответ 1
Более новые subprocess.check_output
и подобные команды должны заменить os.system
. Подробнее см. эту страницу. Хотя я не могу проверить это на Windows, следующее должно работать:
from subprocess import check_output
check_output("dir C:", shell=True)
check_output
возвращает строку результата из вашей команды. В качестве альтернативы subprocess.call
просто запускает команду и возвращает статус команды (обычно 0, если все в порядке).
Также обратите внимание, что в python 3 этот вывод строки теперь выводится bytes
. Если вы хотите изменить это в строку, вам нужно что-то вроде
from subprocess import check_output
check_output("dir C:", shell=True).decode()
Если необходимо, вы можете сказать это, тип кодирования ваших программных выходов. По умолчанию используется utf-8
, который обычно работает нормально, но другие стандартные параметры здесь.
Ответ 2
Вы бы использовали системный метод os .
Вы просто ввели строковую форму команды, возвращаемое значение - переменная enpivonment Windows COMSPEC
Например:
os.system('python') открывает командную строку Windows и запускает интерпретатор python
Ответ 3
Рефакторинг ответа @srini-beerge, который получает вывод и код возврата
import subprocess
def run_win_cmd(cmd):
result = []
process = subprocess.Popen(cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
for line in process.stdout:
result.append(line)
errcode = process.returncode
for line in result:
print(line)
if errcode is not None:
raise Exception('cmd %s failed, see above for details', cmd)
Ответ 4
import subprocess
result = []
win_cmd = 'ipconfig'(curr_user,filename,ip_address)
process = subprocess.Popen(win_cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
for line in process.stdout:
print line
result.append(line)
errcode = process.returncode
for line in result:
print line
Ответ 5
Вы можете использовать пакет subprocess
с кодом, как показано ниже:
import subprocess
cmdCommand = "python test.py" #specify your cmd command
process = subprocess.Popen(cmdCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print output