无法通过Subprocess调用从Silver Searcher获得输出

时间:2014-11-27 21:18:11

标签: python subprocess

我试图在Python中为The Silver Searcher编写一个包装器(Silver Searcher就像ack和grep)。

但是,我无法使用子进程库来调用程序。我可以获得帮助文本或版本等信息,但无法启动搜索(当我尝试时,它会失败并打印帮助文本)。

我徒劳地尝试了下面的事情:

import subprocess

p = subprocess.Popen(['ag', 'fit'], shell=True)
p.communicate()

p = subprocess.Popen(['ag', 'fit'])
p.communicate()

p = subprocess.Popen(['ag', 'fit'], shell=True)
p.wait()
p.communicate()

p = subprocess.Popen(['ag', 'fit'])
p.wait()
p.communicate()

如何捕获银色搜索者的输出?优先创建(打电话需要几秒钟)。

2 个答案:

答案 0 :(得分:1)

以下适用于我的系统:

import subprocess

p = subprocess.Popen(["ag", "fit"], stdout=subprocess.PIPE)
print p.communicate()

答案 1 :(得分:1)

我使用了IPython并遇到了同样的问题。 版本:

  • Python 2.7.12
  • IPython 5.3.0
  • ag 0.32.0

已为--vimgrep电话选项ag解决。

In [1]: file_list = ! ag one

In [2]: file_list
Out[2]: []

In [3]: file_list = ! ag one --vimgrep

In [4]: file_list
Out[4]: ['file2:1:1:one', 'file1:1:1:one', 'file3:1:1:one']

In [5]: