我有以下代码来执行命令并获取输出。
import os, sys, subprocess, string
def executeCommand(execstr):
print "cmd: " + execstr
p = subprocess.Popen(execstr, stdout=subprocess.PIPE, shell=True)
output = ""
(output, err) = p.communicate()
p_status = p.wait()
if (p_status != 0):
print "Unable to execute "+ execstr
return (string.strip(output))
cmd = "grep -R \"pattern\" sample.txt"
output = executeCommand(cmd)
print "output: " +output
这里从p.wait()返回的p_status是1(非零) 在命令行中执行命令时,它成功。 sample.txt是一个空文本文件。 来自p.communicate的错误是无。 上面的代码有什么问题。
答案 0 :(得分:1)
grep
can return non-zero status even if there are no errors
如果找不到任何内容,则返回1
。它会在错误上返回2
(或更高)。