我使用的是python2.7.1,我试图识别所有不包含文本字符串的文本文件。在
这个程序一开始似乎还在工作,但每当我把文本字符串添加到一个文件中时,它总是像不包含它一样出现(误报)。当我检查文本文件的内容时,字符串显然存在。在
我试着写代码def scanFiles2(rdir,sstring,extens,start = '',cSens = False):
fList = []
for fol,fols,fils in os.walk(rdir):
fList.extend([os.path.join(rdir,fol,fil) for fil in fils if fil.endswith(extens) and fil.startswith(start)])
if fList:
for fil in fList:
rFil = open(fil)
for line in rFil:
if not cSens:
line,sstring = line.lower(), sstring.lower()
if sstring in line:
fList.remove(fil)
break
rFil.close()
if fList:
plur = 'files do' if len(fList) > 1 else 'file does'
print '\nThe following %d %s not contain "%s":\n'%(len(fList),plur,sstring)
for fil in fList:
print fil
else:
print 'No files were found that don\'t contain %(sstring)s.'%locals()
scanFiles2(rdir = r'C:\temp',sstring = '!!syn',extens = '.html', start = '#', cSens = False)
我想代码中有个缺陷,但我真的没看到。在
更新
代码仍然会出现许多误报:确实包含搜索字符串但被标识为不包含该字符串的文件。在
文本编码会是一个问题吗?我在搜索字符串前面加了U,以说明Unicode编码,但这没有任何区别。在
Python是否以某种方式缓存文件内容?我不这么认为,但这在某种程度上可以解释文件在被更正后仍然弹出。在
某种恶意软件会不会引起这样的症状?对我来说似乎不大可能,但我有点迫不及待地想把它修好。在