如何制作一个可以注销,关闭和重启计算机的python脚本?

时间:2013-02-08 01:08:15

标签: python windows subprocess

背景

我目前正在自学python的过程中,我认为拥有一种“控制中心”是一个非常酷的项目,我可以在其中关闭,重新启动和注销我的计算机。我也想使用子进程模块,因为我听说导入OS模块已经过时了。

当前代码

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

问题

我真正要问的是,有没有办法(使用子进程模块)注销并重新启动计算机?

技术规格

Python 2.7.3

Windows 7,32位

3 个答案:

答案 0 :(得分:10)

首先你必须:

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年,所以我猜你自问这个问题后就已经做了转换。

答案 1 :(得分:7)

要重新启动:

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"])

答案 2 :(得分:2)

如果你不能以某种方式让shutdown工作,你总是可以调用它从USER库调出的函数。您可以通过ctypeswin32api执行此操作,但您也可以这样做:

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

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

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

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

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