Как отключить компьютер с помощью Python
Я написал скрипт на Python, который в конечном итоге должен отключить компьютер. Эта строка является частью этого:
os.system("shutdown /p")
Она делает некоторое отключение, но остается в включенной панели управления Windows (где пользователь может переключать пользователей компьютера). Есть ли способ полностью отключить компьютер? Я пробовал другие методы os.system(«отключение ___») без успеха. Есть ли другой метод, который может помочь? python windows cmd shutdown
Поделиться Источник 02 декабря 2015 в 10:02
11 ответов
import os os.system('shutdown -s')
Это будет работать для вас.
Поделиться 02 декабря 2015 в 18:55
import os os.system('sudo shutdown now')
или: если вы хотите немедленно отключиться без запроса пароля sudo , используйте следующее для Ubuntu и аналогичных дистрибутивов:
os.system('systemctl poweroff')
Поделиться 14 декабря 2016 в 22:31
Используя ctypes , вы можете использовать функцию ExitWindowsEx для отключения компьютера. Описание из MSDN:
Выключает интерактивного пользователя, отключает систему или отключает и перезапускает систему.
Сначала некоторый код:
import ctypes user32 = ctypes.WinDLL('user32') user32.ExitWindowsEx(0x00000008, 0x00000000)
- Получите библиотеку ctypes
- ExitWindowsEx предоставляется user32.dll и должен быть загружен через WinDLL()
- Вызовите функцию ExitWindowsEx() и передайте необходимые параметры.
Parameters:
Все аргументы являются шестнадцатеричными.
Первый аргумент, который я выбрал:
отключает систему и отключает питание. Система должна поддерживать функцию отключения питания.
Есть много других возможных функций, см. документацию для полного списка.
Второй аргумент должен указывать причину отключения, которое зарегистрирована системой. В этом случае я установил его для Другой проблемы , но есть много вариантов выбора. См. этот для полного списка.
Создание кросс-платформенности:
Это можно объединить с другими методами, чтобы сделать его кросс-платформенным. Например:
import sys if sys.platform == 'win32': import ctypes user32 = ctypes.WinDLL('user32') user32.ExitWindowsEx(0x00000008, 0x00000000) else: import os os.system('sudo shutdown now')
Это зависимая функция Windows (хотя у Linux/Mac будет эквивалент), но это лучшее решение, чем вызов os.system() , так как пакетный скрипт с названием shutdown.bat не будет конфликтовать с командой (и в то же время вызовет угрозу безопасности).
Кроме того, он не беспокоит пользователей сообщением «Вы собираетесь выйти менее чем за минуту» , как делает shutdown -s , но выполняется без проблем.
В качестве вспомогательного замечания используйте подпроцесс вместо os.system() (см. Разница между subprocess.Popen и os.system )
В качестве побочного замечания: Я создал WinUtils (только для Windows), что немного упрощает это, однако оно должно быть быстрее (и не требует Ctypes), так как оно построено в C.
Example:
import WinUtils WinUtils.Shutdown(WinUtils.SHTDN_REASON_MINOR_OTHER)
Поделиться 12 июня 2018 в 19:47
Документ Python рекомендует использовать subprocess вместо os.system. Он предназначен для замены старых модулей, таких как os.system и других.
import subprocess subprocess.run(["shutdown", "-s"])
А для пользователей Linux -s не требуется, они могут просто использовать
import subprocess subprocess.run(["shutdown"])
Поделиться 28 августа 2021 в 08:07
Единственный вариант, который действительно работает для меня без проблем, это:
import os os.system('shutdown /p /f')
Поделиться 03 февраля 2019 в 05:00
Попробуйте этот фрагмент кода:
import os shutdown = input("Do you wish to shutdown your computer ? (yes / no): ") if shutdown == 'no': exit() else: os.system("shutdown /s /t 1")
Поделиться 29 мая 2020 в 12:42
Этот код на Python может выполнить действие:
import os os.system('sudo shutdown -h now')
Поделиться 30 декабря 2018 в 20:57
Вот пример для отключения Windows:
import os os.system("shutdown /s /t 1")
Вот пример для отключения Linux (по разрешению root):
import os os.system("shutdown now -h")
Поделиться 30 января 2020 в 07:11
График установки pip
В случае, если вы также хотите запланировать это:
import schedule import time import os when= "20:11" print("The computer will be shutdown at " + when + "") def job(): os.system("shutdown /s /t 1") schedule.every().day.at(when).do(job) while True: schedule.run_pending() time.sleep(1)
Поделиться 13 мая 2021 в 01:49
Как вы хотите, winapi можно использовать.
import win32api,win32security,winnt win32security.AdjustTokenPrivilege(win32security.OpenProcessHandle(win32api.GetCurrentProcess(),win32security.ADJUST_TOKEN_PRIVILEGE | win32security.TOKEN_QUERY),False,[(win32security.LookupPrivilegeValue(None,winnt.SE_SHUTDOWN_NAME),winnt.SE_PRIVILEGE_ENABLE)]) win32api.InitateSystemShutdown(None,"Text",second,Force_Terminate_Apps_as_boolean,Restart_as_boolean)
Поделиться 26 июня 2020 в 13:11
В случае с Windows, использование os.system(«shutdown /p») работает, но иногда создает быстро мигающее окно терминала (см. эту точную ситуацию).
В этом случае лучше использовать subprocess с флагом создания процесса:
import subprocess subprocess.Popen(r"C:\Windows\System32\shutdown.exe /p", creationflags=subprocess.CREATE_NO_WINDOW)
Python-сообщество
![]()
- Начало
- » GUI
- » Выключение компьютера по заданному времени
#1 Июнь 21, 2011 21:23:33
sanodin От: Зарегистрирован: 2011-06-16 Сообщения: 515 Репутация: 31 Профиль Отправить e-mail
Выключение компьютера по заданному времени
Слепил скрипт,прописываешь время в скрипте и запускаешь….в заданное время комп выключается
Хотел вывести в окно Tkinter но не могу найти как что бы время можно было в окне вводить а не в скрипте….видел много раз в других прогах как выпадает менюшка и там выбираешь час и минуты…не знаю как так сделать…подскажите…или пример приведите
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Tkinter
import time
from os import geteuid,system
curtime = ''
clock = Tkinter.Label()
clock.pack()
strToFind=("01:10:00")
def tick():
global curtime
newtime = time.strftime('%H:%M:%S')
if newtime != curtime:
curtime = newtime
clock.config(text=curtime)
clock.after(200, tick)
line=curtime
if strToFind in line:
system("/usr/bin/shutdown -h now")
tick()
clock.mainloop()
#2 Июнь 22, 2011 09:51:36
sanodin От: Зарегистрирован: 2011-06-16 Сообщения: 515 Репутация: 31 Профиль Отправить e-mail
Выключение компьютера по заданному времени
Надо создать группу shutdown , инструкцией пользовался взятой вроде здесь на форуме:
цель — выключение компьютера, которое по умолчанию не удастся сделать без административных полномочий, нам придется сделать еще несколько телодвижений.
* Создадим скрипт /usr/bin/shutdown, написав в него:
#!/bin/sh
sudo /sbin/shutdown $*
Как видно из текста скрипта — там используется обычный /sbin/shutdown, которому передаются все параметры командной строки, передаваемые нашему /usr/bin/shutdown. А также /sbin/shutdown выполняется с командной sudo, которая позволяет выполнять другие команды от имени администратора системы.
* Создадим группу shutdown
sudo groupadd shutdown
и добавим себя в нее, воспользуясь groupadd/usermod или отредактировав файл /etc/group. Я пользовался последним способом, для этого нужно найти в файле /etc/group строку типа
shutdown:x:1002:
Чтобы добавить себя в эту группу, измените эту запись на вот такую:
shutdown:x:1002:user1
где user1 — это логин вашего пользователя. Если необходимо добавить еще несколько пользователей в эту группу, перечислите их через запятые в той же строке (без пробелов). Цифра 1001 (ИД группы) может у вас быть другой.
В конечном виде у меня эта строка получилась такой:
shutdown:x:1002:skymanphp
* Присвоим этот скрипт группе shutdown:
chgrp shutdown /usr/bin/shutdown
* Установим право на запуск только группе shutdown:
chmod g+x /usr/bin/shutdown
* Чтобы sudo не попросило у нас пароль, добавим в файл /etc/sudoers строчку:
%shutdown ALL= NOPASSWD: /sbin/shutdown
Она значит то, что всем пользователям, входящим в группу shutdown разрешен запуск скрипта /sbin/shutdown с административными полномочиями без ввода пароля.
#3 Июль 15, 2017 11:48:14
Kyrym Зарегистрирован: 2016-12-28 Сообщения: 225 Репутация: 3 Профиль Отправить e-mail
Выключение компьютера по заданному времени
Не знаю Tkinter, но получается, что, если делать без таймера, то выключать комп должен такой код из двух строк:
from os import system system("/usr/bin/shutdown -h now")
.
Это для линукса?
Зато прекрасно работает код запуска батника:
файл питона:
import os os.startfile(r'C:\A\Выключение_ПК.txt')
файл bat:
shutdown.exe -s -t 00
Отредактировано Kyrym (Июль 15, 2017 11:51:29)
Таймер для выключения компьютеров на Python 3
Нужен простой скрипт для выключения компьютеров, чтобы когда компьютер включался он проверял время и начал отсчет до конкретного времени и отключился.
Отслеживать
3,189 2 2 золотых знака 23 23 серебряных знака 45 45 бронзовых знаков
задан 21 июн 2018 в 9:26
1 1 1 серебряный знак 1 1 бронзовый знак
Зачем для этого Python? Хватит написать bat’ник в пару строк и запихать в автозапуск.
21 июн 2018 в 9:36
наверно можно и на powershell это организовать .
21 июн 2018 в 10:00
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Например это можно сделать бесконечным циклом, который будет проверять текущее время с желаемым
import os import time def shutdown(offPC=19): while time.gmtime().tm_hour < offPC: time.sleep(60) # ожидание 1 минуту os.system("shutdown -s")
Также можно попробовать после включения запускать скрипт, вычислять время в секундах до желаемого времени отключения и формировать такую запись(отложенное выключение):
os.system("shutdown -s -t xx")
Где XX время в секундах до отключения.
Выключение пк через определенное время

Всем привет. Только начал изучать питон и решил что по мере поступления ошибок изучать новое.
Захотел себе сделать удобство таким образом: ввожу время в часах и спустя указанное количество времени отключается компьютер, но что-то не выходит.
Код:
1 2 3 4 5 6 7 8 9 10 11
from os import system while True: try: timer = int(input('Через сколько выключить компьютер? ')) except ValueError: print('Ошибка! Введите количество часов.') else: print("Хорошо, компьютер выключится через ",timer,"ч.") offtime = timer*60*60 system('shutdown -s -t ',offtime) break
Подскажите, что я делаю не так?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как прописать в коде открытие программы по клику на .EXE через определенное время?
Здравствуйте, такой вопрос есть файл main.py в нем код такой: import tkinter master =.
Как постить(в определенное время) картинки в паблик через vk_api с циклом for?
Картинки в отдельной папке с проектом(не с вк). Надеюсь, существует способ постить картинки, не.
Как удалить сообщение от Telegram бота (aiorgam) через какое-то определённое время?
Например удалить вот такое сообщение через 24 часа: await bot.send_message(message.from_user.id.
Как в PyQt сделать так, чтобы код выполнился через определенное время?
Всем привет! Как в PyQt использовать таймер? этот код не работает: from PyQt5.QtCore import.
![]()
4623 / 2043 / 361
Регистрация: 17.03.2012
Сообщений: 10,116
Записей в блоге: 6
А команда system ждёт завершения или нет?
Регистрация: 21.11.2020
Сообщений: 3
Сообщение от dondublon 
А команда system ждёт завершения или нет?
Оказалась проблема в том, что систем принимает строчный тип.
1 2 3 4 5 6 7 8 9 10 11 12
from os import system while True: try: timer = int(input('Через сколько выключить компьютер? ')) except ValueError: print('Ошибка! Введите количество часов.') else: print("Хорошо, компьютер выключится через ",timer,"ч.") timer = timer*60*60 offtime = str(timer) system('shutdown -s -t '+offtime) b
Оставлю тут, вдруг кому поможет.
Регистрация: 31.05.2022
Сообщений: 1
У меня вот так заработало
1 2 3 4 5 6 7 8 9 10 11
from os import system while True: try: timer = int(input('Через сколько часов выключить компьютер? ')) except ValueError: print('Ошибка! Введите количество часов.') else: print("Хорошо, компьютер выключится через ",timer,"ч.") offtime = timer*60*60 system(f'shutdown -t ') break
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Выключение службы через определенное время
Нужно, чтобы после получения широковещательного сообщения о новом СМС запускалась служба ровно на.
Выключение компа в определённое время
Подскажите как сделать такую опцию что бы можно было поставить время и комп сам выключился? вот.
Выключение комьютера в определенное время
Win 7 ultimate доброго дня. Дома встал вопрос про ограничение пользования компьютером для младшего.
Выключение компьютера в определенное время.
Всем доброго дня! Дело у меня такое: в форме есть 2 комбобокса, 1 - часовой (00ч. ,01ч. 24ч.) и.
Выключение двигателя через определенное количество оборотов
PIC 16f877. Двигатель с датчиком кол-ва оборотов. Выключить двигатель через 2 оборота. Помогите.
Как проходить через цикл через определенное время
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;.
После блокировки экрана через некоторое время выключение
У меня телефон на android, если поставить его на блокировку, экран потухнет, если тут же снять, всё.
Или воспользуйтесь поиском по форуму: