Запуск команд оболочки Windows с Python

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

7 ответов

Решение

Новее 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, который обычно работает нормально, но другие стандартные варианты здесь.

Вы должны использовать системный метод модуля os.

Вы просто вводите строковую форму команды, возвращаемое значение - переменная окружения Windows COMSPEC.

Например:

os.system ('python') открывает командную строку windows и запускает интерпретатор python

Пример os.system ('python

Рефакторинг ответа @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)

Простой импорт пакета os и выполните команду ниже.

import os
os.system("python test.py")

Вы можете использовать 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
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

Это сработало для меня, хотя вам не нужно использоватьimport subprocessна всякий случай вам нужно работать с adb.

      from tkinter import *
import os
# import subprocess

root = Tk()
root.title("Shutdown PC")
root.geometry("500x500")

def button():
   os.system('timeout /T 10 /nobreak')
   os.system('SHUTDOWN/s')
   
   

b = Button(root, text="SHUTDOWN PC", width=30, height=2, command = button)
b.pack()

root.mainloop()
Другие вопросы по тегам