我想通过一个特定的目录全的头文件进行搜索,并通过每个头文件看,如果任何文件中有一个字符串“结构”,我只想程序打印的文件有它。
我有这到目前为止,但它无法正常工作,你可以帮我指点迷津:
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 )
看来你感兴趣的文件名,也不行,所以我们可以通过读取整个文件和搜索速度事情了:
...
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
这工作时,我测试它在我结束:
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
,否则你打印文件对象,而不是文件本身的名称。