我正在编写python脚本,我想从crontab调用。它脚本调用xrandr
命令并将其输出保存在变量中,如下所示:
output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
我希望将xrandr
的输出保存在字符串中。
如果从终端执行它,一切正常,但是如果使用cron运行它,则变量output
保持为空。
其余代码正常执行,因此cron并不是问题。
那么如何使该命令正确执行?
谢谢您的建议。
答案 0 :(得分:0)
您要存储输出,可以在此处使用communicate()
来提供帮助,如下所示:
from subprocess import PIPE
output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
text = output.communicate()[0]
print(text)
或者也许是这样,在这种情况下,您可以不太确定地移除.stdout.decode('utf-8')
,但可以在有或没有的情况下拍摄照片:
from subprocess import PIPE
output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
print(output.stdout)
答案 1 :(得分:0)
我猜在cron环境中没有设置PATH变量,因此您应该提供xrandr的绝对路径(您可以通过which xrandr
找到它)。
例如。如果此路径/usr/bin/xrandr
试试
from subprocess import PIPE
output = subprocess.run('/usr/bin/xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8')
text = output.communicate()[0]
print(text)
我认为更好的方法是同时捕获stderr并在发生错误时记录错误。