python - 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")
我究竟做错了什么?
解决方案
我认为您不需要查看标准输出和标准错误。
您需要做的就是查看返回码:
process1 = Popen("grep -q string file.txt",shell=True,stdout=PIPE)
process1.communicate()
print(f"grep returned {process1.returncode}")
当找到某些东西时,grep 将返回零。
推荐阅读
- c# - 有这样的对象的名称吗?我将如何用它填充树视图?
- java - Java 用特殊字符分割
- javascript - 如何使用 CSRF 在 CI 3 中实现 Summernote 删除图像
- javascript - 如果表达式 B 跟随 A,则返回 true
- java - Windows 上的 Java 路径硬编码在我在 Linux 上的 shell 脚本中,需要使其更灵活
- windows - 如何在 Windows 10 电脑上安装 Redis
- excel - VBA Excel一次从多个工作表中删除形状
- azure - Azure 资源管理器模板需要帮助删除 IP 限制
- java - 无法通过java执行docker命令
- python-3.x - 每行将特定格式文件行导入 Python