Подтвердить что ты не робот

Запуск команд оболочки Windows с помощью python

Как мы можем взаимодействовать с оболочкой ОС с помощью Python? Я хочу запустить команды windows cmd через python. Как это можно достичь?

4b9b3361

Ответ 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

os.system('python') example

Ответ 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