2011-01-07 7 views
2

Есть ли способ сделать компьютер программой Python при перезагрузке? Родовое решение хорошо, но, в частности, я нахожусь в окнах.перезапустить локальный компьютер с python

+1

Не окна, но на linux это так же просто, как os.system («перезагрузка»). Предполагая, что у вас есть правильные привилегии. – Falmarri

+2

Не рекомендуется использовать 'os.system'. Он устарел. @Claudiu: используйте 'subprocess'. – user225312

+2

@ A: Нет, он не был устаревшим, и для чего-то тривиального, как это, он работает отлично. –

ответ

10

Нет общего способа сделать это, afaik.

Для Windows вам необходимо получить доступ к API Win32. Как так:

import win32api 
    win32api.InitiateSystemShutdown() 

Модуль win32api является частью pywin32.

Для linux/os x, я думаю, что вызов команды «перезагрузка» является самым простым.

import os 
os.system('reboot now') 

Или что-то в этом роде.

(Примечание downvoters: os.system() имеет не устаревшего Текст «Модуль подпроцесса обеспечивает более мощные средства для порождения новых процессов и получения их результатов, с помощью этого модуля предпочтительнее использовать эту функцию. . Для простых случаев, подобных этому, когда вы не заинтересованы в получении результатов или в многопроцессорной работе, os.system() работает просто отлично).

+0

Я не проголосовал за вас, однако, используя внешний модуль (win32api) для перезагрузки компьютера, который может быть перезагружен напрямую с помощью wmi с помощью 'wmic', так и так. Использование os.system мне неважно. – Anders

+1

@Anders: «WMIC.exe доступен только под Windows XP Professional, Windows Server 2003, Windows Vista и Windows Server 2008.» Итак, нет. Плохая идея. –

+0

Он доступен и в других системах, например Windows 7. Я не знаю, включен ли он в SP для Windows XP Home, очень хорошо. – Anders

7

Почему вы не вызываете команду shutdown с использованием подпроцесса?

3

Вы можете перезагрузить систему Windows, с помощью: os.system("shutdown -t 0 -r -f")

Пример:

import os 
print "REBOOTING" 
os.system("shutdown -t 0 -r -f") 

Изменить номер перед -t, чтобы изменить количество секунд до выключения.

Смежные вопросы