Запуск команд оболочки 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
Рефакторинг ответа @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()