import subprocess
cmd = "grep -r * | grep jquery"
print cmd
subprocess.check_output(cmd, shell=True)
Run Code Online (Sandbox Code Playgroud)
subprocess.CalledProcessError:命令'grep -r * | grep jquery'返回非零退出状态1
我可以在shell中执行该命令而不会出现问题。如何查看python中的实际错误?
该代码段是一个较大的脚本的一部分,该脚本带有多个参数并链接grep命令+添加一些排除项(我不需要grep日志文件或压缩后的JavaScript。因此,使用了学究的语法。
Python 2.7.10
引用文档:
如果返回码非零,则会引发一个
CalledProcessError。该CalledProcessError对象将在returncode属性中具有返回码,在属性中具有任何输出output。
import subprocess
cmd = "grep -r * | grep jquery"
print cmd
try:
subprocess.check_output(cmd, shell=True)
except subprocess.CalledProcessError as e:
print e.returncode
print e.output
Run Code Online (Sandbox Code Playgroud)
错误消息已打印到stderr,您需要关键字arguments stderr=subprocess.STDOUT。
除了返回代码和stdout / stderr,没有其他“出了什么问题”的原因。
“非零退出状态”表示您运行的命令指示的状态不是成功。对于grep,文档明确指出退出状态为 1 表示未找到任何行,而退出状态大于 1 表示发生了一些其他错误。
引用手册:
退出状态- grep 实用程序以下列值之一退出:
Run Code Online (Sandbox Code Playgroud)0 One or more lines were selected. 1 No lines were selected. >1 An error occurred.
顺便说一句——如果你想jquery在当前目录下的所有文件中查找字符串(递归),请使用grep -r jquery .; grep -r *搜索目录中的第一个文件的名称中的所有其他文件的内容目录。
| 归档时间: |
|
| 查看次数: |
6343 次 |
| 最近记录: |