【发布时间】:2013-03-14 20:51:05
【问题描述】:
我正在尝试使用 python 对文件启动 grep 代码:
def runProcess(self, cmd):
p = subprocess.Popen(cmd, bufsize=16000, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
return iter(p.stdout.readline, b'')
问题是我每次启动它时都会得到不同的匹配。一些行在返回对象中被简单地跳过。就像缓冲区已被覆盖一样。我已经尝试了我在子流程中找到的所有方法来完成这项工作,但都导致了同样的问题。
有关信息,我已直接在 shell 中测试了我的 grep 命令,它运行良好,这是我作为 cmd 参数传递给我的函数的内容
['egrep', '-wi', '-nr', "'keyword1|keyword2|blabla'", 'test/match_inside.txt']
我也尝试过使用不同的 bufsize 值(并且没有 c 值)
【问题讨论】:
-
请提供SSCCE,包括一些在运行时提供不同值的示例输入文件。 (除非您知道平台、平台版本、Python 版本、grep 版本无关紧要,否则也请提供该信息。)
-
我的问题已经解决了,但为了理解起见,先生,我会这样做!
-
我实际上无法用 SSCCE 重现我的问题。通过在我的 args 中使用简单的引号,我只匹配文件中的 1 行(我应该匹配 5),但是我匹配的行永远不会改变,这与我通常会错过 1 或 2 行的实际代码相反,它们每次都在变化。我现在有点困惑,我的代码中显然还有另一件事导致了这种情况发生
标签: python random grep subprocess