对于特定的字符串搜索目录(Search directory for specific string)

2019-08-16 18:38发布

我想通过一个特定的目录全的头文件进行搜索,并通过每个头文件看,如果任何文件中有一个字符串“结构”,我只想程序打印的文件有它。

我有这到目前为止,但它无法正常工作,你可以帮我指点迷津:

import glob
import os
os.chdir( "C:/headers" )
for files in glob.glob( "*.h" ):
    f = open( files, 'r' )
    for line in f:
        if "struct" in line:
            print( f )

Answer 1:

看来你感兴趣的文件名,也不行,所以我们可以通过读取整个文件和搜索速度事情了:

...
for file in glob.glob('*.h'):
    with open(file) as f:
        contents = f.read()
    if 'struct' in contents:
        print file

使用with构造确保文件被正确关闭。 该f.read()函数读取整个文件。

更新

由于原来的海报说,他的代码无法打印,我建议插入一个调试线:

...
for file in glob.glob('*.h'):
    print 'DEBUG: file=>{0}<'.format(file)
    with open(file) as f:
        contents = f.read()
    if 'struct' in contents:
        print file

如果你没有看到开头的任何行“DEBUG:”,那么你的水珠()返回一个空列表。 这意味着你在一个错误的目录中降落。 检查拼写你的目录,与目录的内容一起。

如果你看到“DEBUG:”行,但看不到预期的输出,你的文件可能没有在任何“结构”检查这种情况下,首先到该目录,并发出以下DOS命令:

find "struct" *.h


Answer 2:

这工作时,我测试它在我结束:

for files in glob.glob( "*.h" ):
    f = open( files, 'r' )
    file_contents = f.read()
    if "struct" in file_contents:
            print f.name
    f.close()

请确保您打印f.name ,否则你打印文件对象,而不是文件本身的名称。



文章来源: Search directory for specific string