Python:Popen.wait返回1,即使执行成功

时间:2015-01-07 05:29:26

标签: python subprocess

我有以下代码来执行命令并获取输出。

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的错误是无。 上面的代码有什么问题。

1 个答案:

答案 0 :(得分:1)

grep can return non-zero status even if there are no errors

如果找不到任何内容,则返回1。它会在错误上返回2(或更高)。