我有一个简单的脚本,它使用subprocess.check_output来运行crontab命令。但是,当我执行crontab的脚本时,它返回退出代码为1,如果我打印错误输出,它会打印“no crontab for user”,这是它应该打印而不进入错误模式。
这是我的剧本:
import subprocess
try:
string = subprocess.check_output(['crontab','-l'])
print "Yes! "
print string
except subprocess.CalledProcessError as e:
print e.output
奇怪的是,如果我运行ls -l而不是crontab -l,一切都按预期运行,我得到了我想要的输出。但是,一旦我运行crontab -l,如果我删除print e.output:
,这就是我得到的Traceback (most recent call last):
File "python1.py", line 3, in <module>
string = subprocess.check_output(['crontab','-l'])
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['crontab', '-l']' returned non-zero exit status 1
正如我上面提到的,e.output产生“没有用户的crontab”,但是不应该返回错误,它应该作为正常输出返回。我在这里错过了什么吗?