如何编写一个Python脚本以注销、关机和重启电脑?
背景
我现在正在自学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
这个命令怎么也用不了,你可以直接调用它背后在用户库里用的那个函数。你可以通过 ctypes
或 win32api
来实现,但其实你也可以直接这样做:
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"])