如何使一个可以注销,关机,并重新启动计算机的Python脚本?

背景

我目前正在教自己的python,我认为这将是一个非常酷的项目,有一个“控制中心”,我可以closures,重新启动,并注销我的电脑。 我也想使用subprocess模块,因为我听说导入OS模块已经过时了。

当前代码

def shutdown(self): import subprocess subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 

我真正问的是,有没有办法(使用subprocess模块)注销并重新启动我的电脑?

技术规格

Python 2.7.3

Windows 7,32位

重启:

 shutdown /r 

要注销:

 shutdown /l 

最终的代码块(按要求):

注销:

 def shutdown(self): import subprocess subprocess.call(["shutdown", "-f", "-s", "-t", "60"]) 

重新开始:

 def shutdown(self): import subprocess subprocess.call(["shutdown", "-f", "-r", "-t", "60"]) 

首先你必须:

 import subprocess 

关闭您的Windows PC:

 subprocess.call(["shutdown", "/s"]) 

重新启动你的Windows PC

 subprocess.call(["shutdown", "/r"]) 

要注销您的Windows PC:

 subprocess.call(["shutdown", "/l "]) 

900秒后关闭Windows PC:

 subprocess.call(["shutdown", "/r", "/s", "900"]) 

要中止关闭,因为没有很好的理由关闭你的电脑与python脚本,你只是复制粘贴代码从stackoverflow:

 subprocess.call(["shutdown", "/a "]) 

我只在Python 3.5中试过这些函数调用。 首先,我不认为这已经改变了自Python 2.7以来,第二个:这是2016年,所以我想你已经做了转换,因为问这个问题。

如果你不能shutdown以某种方式工作,你可以随时调用它从USER库调用的函数。 你可以通过ctypeswin32api 做到这一点,但你也可以这样做:

 subprocess.call(['rundll32', 'user.exe,ExitWindowsExec') 

或者你可以调用开始菜单使用的更高级别的shell函数:

 subprocess.call(['rundll32', 'shell32.dll,SHExitWindowsEx 2') 

(请参阅有关这些功能的MSDN文档。)

我认为这可能是最糟糕的做法。 如果你想运行一个命令,运行shutdown ; 如果你想使用API​​,请使用win32api 。 但是,如果你有一个奇怪的搞砸系统, shutdown /r只是不起作用,这是一个选项。