【发布时间】:2014-06-18 16:09:19
【问题描述】:
我之前使用过 subprocess 没有任何问题,由于某种原因,当我使用 grep 尝试它时:
grepOut = subprocess.check_output("grep 'hello' tmp", shell=True)
我收到以下错误:
File "/usr/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['grep', "'hello'", 'tmp']' returned non-zero exit status 2
直接在终端中输入命令没有任何错误。
编辑:请参阅 clemej 的答案以获得解释
【问题讨论】:
-
退出状态 1 != 退出状态 2。退出状态 1 表示没有找到字符串。退出状态 2 表示错误。
-
@clemej 我很抱歉,意识到当你发表评论时,给你答案!
-
不要更改问题中的代码。现在错误信息不再对应于代码。您的代码中的一个问题是(如@clemej pointed out)列表参数的使用与
shell=True一起改变了参数的含义。
标签: python linux subprocess