如何编写一个Python脚本以注销、关机和重启电脑?

6 投票
3 回答
56613 浏览
提问于 2025-04-17 15:11

背景

我现在正在自学Python,觉得做一个“控制中心”项目很酷,这样我就可以关机、重启和注销我的电脑。我还想使用subprocess模块,因为我听说import OS模块已经过时了。

当前代码

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

问题

我想问的是,有没有办法(使用subprocess模块)来注销和重启我的电脑?

技术规格

Python 2.7.3

Windows 7,32位

3 个回答

2

如果你发现 shutdown 这个命令怎么也用不了,你可以直接调用它背后在用户库里用的那个函数。你可以通过 ctypeswin32api 来实现,但其实你也可以直接这样做:

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

或者你可以调用更高级的 shell 函数,这个函数是开始菜单用的:

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

(可以查看 MSDN 文档了解这些函数。)

我觉得这样做可能不是最好的方法。如果你想运行一个命令,就直接用 shutdown;如果你想用 API,就用 win32api。不过,如果你的系统实在是太糟糕了,导致 shutdown /r 根本无法使用,那这也是一个选择。

11

首先,你需要:

import subprocess

要关闭你的Windows电脑:

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

要重启你的Windows电脑:

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

要注销你的Windows电脑:

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

要在900秒后关闭你的Windows电脑:

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

要取消关机,因为没有什么好理由用Python脚本关掉你的电脑,你只是从StackOverflow复制粘贴代码:

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

我只在Python 3.5中尝试过这些功能调用。首先,我认为自从Python 2.7以来,这些没有变化;其次:现在是2016年,所以我想你应该已经切换过来了,因为你在问这个问题的时候。

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

撰写回答