我想在python脚本中嵌入一个命令并捕获输出。在这种情况下,我试图用"find"
找到子目录数量不确定的文件数量不确定的,和grep每个匹配的文件为一个字符串,像这样:在Python中捕获复杂shell命令的输出
grep "rabbit" `find . -name "*.txt"`
我跑的Python 2.6。 6(是的,我也很抱歉,但是现在不能让整个组织为此付出代价)。
我试过了一堆东西,使用subprocess
,shlex
等在这里已经提出,但我还没有找到一个语法,要么吞下去,或最终吸吮“查找... “as the search string for
grep”等建议表示赞赏。 肯
它可以很容易地使用'subprocess.call(...,壳=真)'但这样使用的shell来完成实际上使不安全的Python代码。为什么不从Python内部遍历目录并且执行grep在Python中执行的操作?它非常简单,使您的代码更加便携。 – 5gon12eder 2014-09-19 16:01:07
@ 5gon12eder我可能最终会这样做,但有点想弄清楚如何做这个混乱作为命令输出。一直在看os.walk()。等等。还猜测如果我需要解析5或600个文件,那“mygrep”可能不如“realgrep”那么快。不过,我同意traverse/python是一个很好的选择,因为在发现兔子之后发生的事情会比找到它们需要更长的时间,但是我会这样做。 – Ken 2014-09-19 16:23:06
相关:[如何使用subprocess.Popen通过管道连接多个进程?](http://stackoverflow.com/q/295459/4279) – jfs 2014-09-22 23:19:52