Python - 在“exit 0”字符串中搜索所有文件

时间:2017-09-04 11:11:41

标签: python search glob

我正在尝试使用python搜索文件目录并打开每个文件以搜索字符串。

我们谈论的文件不到1000个,每个文件分别有1,2,3行,所以打开它们只需要几秒钟。

嗯,我认为我已经成功了,但是有一个问题:我要搜索的字符串是“退出0 ”。

#!/usr/bin/env python

import glob

scriptsdir = "/dummydir/*.ksh"
string = "exit 0"
files = glob.glob(scriptsdir)
teste = 0

for script in files:
    f=open(script,"r")
    for line in f:
        if string in line:
            teste = teste + 1
    f.close()    
print teste

这很糟糕,因为代码正常工作:像这样,最后的“teste”值指的是目录上的.ksh文件数,但是如果将字符串更改为退出1 ,最终“teste”的值为0.我实际上是在搜索某些文件中存在的“退出0 ”字符串。

有可能吗?我已经测试了它,如果我将字符串值更改为存在的值,则计数正确。

有任何帮助吗?

谢谢,

3 个答案:

答案 0 :(得分:0)

每个匹配的行都会增加您的计数器;如果一个文件有多次该字符串,则每次匹配都会增加计数器。

您可以通过在计数器增量后添加一个中断来解决此问题。这将导致Python立即转移到下一个文件。

答案 1 :(得分:0)

你可能会阅读所有内容f.read()

#!/usr/bin/env python
import glob
scriptsdir = "/dummydir/*.ksh"
string = "exit 0"
files = glob.glob(scriptsdir)
teste = 0

for script in files:
    f=open(script,"r")
    if string in f.read():
        teste = teste + 1
    f.close()    
print teste

答案 2 :(得分:0)

感谢您的评论。一旦我开始打印“line”值,我注意到他从其他地方获得了“exit 0”,再次查看脚本并发现第三个脚本正在调用具有出口0的文件内部写入。

我不同意这种做事方式,但我没有足够的力量来改变事情的方式,所以在那之后我可以解决我的问题并且看到搜索“退出0”根本不是我的问题。 / p>

干杯