首页 > 解决方案 > python从子进程中获取grep -q的输出

问题描述

我正在尝试在 python 中运行 greq -q ,但它不起作用。首先我发现我需要.decode()字符串。但后来我注意到即使 grep 命令匹配,我每次都会得到空输出。

代码:

from subprocess import Popen, PIPE
import os

process1 = Popen("grep -q string file.txt",shell=True,stdout=PIPE)
stdout1,stderr1 = process1.communicate()
if stdout1.decode() == "":
    print("not found")
else:
    print("found")

我究竟做错了什么?

标签: pythonpython-3.xgrep

解决方案


我认为您不需要查看标准输出和标准错误。

您需要做的就是查看返回码:

process1 = Popen("grep -q string file.txt",shell=True,stdout=PIPE)
process1.communicate()
print(f"grep returned {process1.returncode}")

当找到某些东西时,grep 将返回零。


推荐阅读