很抱歉以前有人问过这个问题,但我似乎没有找到解决问题的办法。
我有大约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中”的输出,并且可以在您认为合适的情况下对这些行执行聪明的操作。