首页 > 解决方案 > 在从 crontab 调用的 python 脚本中执行 bash 命令

问题描述

我正在编写一个 python 脚本,我想从 crontab 调用。它脚本调用xrandr命令并将其输出保存在一个变量中,如下所示: output = subprocess.run('xrandr', shell=True, stdout=subprocess.PIPE).stdout.decode('utf-8') 我希望将输出xrandr保存在一个字符串中。如果我从终端执行它,这一切正常,但如果我使用 cron 运行它,变量output保持为空。其余代码正常执行,所以 cron 不是问题。那么如何才能使这个命令正确执行呢?谢谢你的建议。

标签: pythonpython-3.xcron

解决方案


你想存储输出,可以用communicate()here来帮忙,像这样:

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)

推荐阅读