很抱歉以前有人问过这个问题,但我似乎没有找到解决问题的办法。
我有大约500个文本文件,每个大约5-6kb大小。我需要搜索每个文件并检查其中是否存在特定的关键字,并打印每个文件的详细信息。
我可以用

for files in glob.glob("*"):
      and then search for the keyword inside the file

我相信这不是最有效的方法。
还有更好的办法吗?

最佳答案

如果您希望目录中包含*.c文件的所有stdio.h文件,可以

grep "stdio\.h" *.c

(注-编辑以回应@wooble的评论。)
结果可能是这样的
myfile.c: #include <stdio.h>
thatFile.c: #include <stdio.h>

等。
如果要查看“context”(例如,前后行),请使用C标志:
grep -C1 "(void)" *.c

结果:
scanline.c-
scanline.c:int main(void){
scanline.c-  double sum=0;
--
tour.c-
tour.c:int main(void) {
tour.c-int *bitMap;

等。
我认为这对你很有用。
再次强调@Wooble的另一点:如果您真的想用Python来实现这一点,可以使用
import subprocess

p = subprocess.Popen('grep stdio *.c', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
    print line,
retval = p.wait()

现在您可以访问“在python中”的输出,并且可以在您认为合适的情况下对这些行执行聪明的操作。

07-24 09:47
查看更多