Linux更新python3:通过Python3在Linux中关闭屏幕

我试图实现一个 python3 文件关闭计算机屏幕detailed here,命令:

xset-display:0.0 dpms force off

进入终端确实可以工作,它会关闭屏幕,甚至不需要其他命令将其重新打开,因为任何按键都会将其打开。

现在如何将其实现到 python 中,尤其是使用subprocess,因为我听说os模块使用起来不是很安全。

我试过了

import subprocess
subprocess.run(["xset","-display :0.0 dpms force off"])

但它不起作用,它给了我一个错误。请帮助,并告诉我像这样运行它是否安全,或者是否有另一个解决方案从 python 做到这一点。

0

首先:在以后的问题中,不要只是说“它不起作用,它给了我一个错误”。向我们确切地显示错误消息是什么。

我的猜测是,你开始这样的消息:

xset: unknown option -display :0.0 dpms force off
usage: xset [-display host:dpy] option ...

后跟一长串xset将接受的选项。

这是因为您的subprocess.run参数列表中的所有xset命令参数都卡在列表中的单个项目中。

xset "-display :0.0 dpms force off"

其中引号将导致所有参数单词被分组为一个xset不理解的单个大参数。如果您在终端中运行该命令,您应该从 Python 程序中获得完全相同的消息。

要修复它,而不是写这个:

    subprocess.run(["xset", "-display :0.0 dpms force off"])

写这个:

    subprocess.run(["xset", "-display", ":0.0", "dpms", "force", "off"])

这会导致xset将每个参数视为一个单独的单词,并且它知道如何处理它们。

作为替代方法,您可以将单个字符串传递给subprocess.run代替列表:

    subprocess.run("xset -display :0.0 dpms force off")

但是正如subprocess模块文档的Frequently Used Arguments部分所说,如果您的单个参数需要包含空格或其他需要特殊处理的字符,则使用字符串可能会变得丑陋。

像这样使用subprocess.run是安全的。使用os.system也是安全的(但效率较低),因为在这种情况下,您使用的命令和参数是固定的,并且完全由您的程序提供。os.system的参数由其值来自程序外部的变量指定时变得危险。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(873)
樱之舞漫展cd:字节反向ABCD到CDAB与 python
上一篇
数据库管理软件:Mac的最佳数据库管理软件 (database software for macs)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(88条)