6

背景

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

当前代码

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

问题

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

技术规格

Python 2.7.3

视窗 7、32 位

4

3 回答 3

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", "/s", "/t", "900"])

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

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

我只在 Python 3.5 中尝试过这些函数调用。首先,我认为自 python 2.7 以来这没有改变,其次:它是 2016 年,所以我猜你在问这个问题后已经进行了切换。

于 2016-10-11T13:03:50.130 回答
8

重新启动:

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"])
于 2013-02-08T01:25:34.193 回答
2

如果您无法shutdown以某种方式开始工作,您总是可以从 USER 库中调用它调用的函数。您可以通过ctypesor执行此操作win32api,但您也可以执行此操作:

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

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

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

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

我认为这可能是最糟糕的方法。如果要运行命令,请运行shutdown;如果要使用 API,请使用win32api. 但是,如果您的系统异常混乱且shutdown /r无法正常工作,那么这是一种选择。

于 2013-02-08T01:34:52.153 回答