我有一个Python脚本,可以管理一系列CasperJS任务并处理结果。它可以从命令行很好地运行,但是当我在cron中运行脚本时,出现错误:

CalledProcessError: Command '['/path/to/casperjs', '/path/to/doSomething.js', 'args']' returned non-zero exit status 1

在Python中,我称CasperJS:
response = subprocess.check_output(['/path/to/casperjs', '/path/to/doSomething.js', 'args'], shell=True)

我也尝试过shell=FalsePopen,但得到的结果相同。我还尝试将整个命令设置为字符串(而不是列表),但这也无济于事。

在 shell 程序中运行时,运行'/path/to/casperjs /path/to/doSomething.js args'返回退出代码0。

我还向我的crontab中添加了PATH=/usr/bin:/bin:/sbin:/usr/local/bin,但无济于事。 (如this question中所建议。)

有什么想法为什么我只会在cron中得到这个错误吗?谢谢!!

编辑:根据以下答案,设置shell=Falsestderr=subprocess.STDOUT可使一切正常工作...

最佳答案

除了stdout外,您还应该 try catch stderr,以便您可以确切地找到程序失败的原因(假设它确实为您打印了一些错误)

cmd = ['/path/to/casperjs', '/path/to/doSomething.js', 'args']
response = subprocess.check_output(cmd,
                shell=True,
                stderr=subprocess.STDOUT)

10-06 08:07