有人可以告诉我为什么下面的代码正在搜索指定路径中的子文件夹。我只想要搜索c:\ Python27中的所有.txt和.log文件。但搜索显示c:\ Python27 \ Doc中的.txt和.log文件的结果......依此类推。感谢。
elif searchType =='3':
print "Directory to be searched: c:\Python27 "
print " "
directory = os.path.join("c:\\","Python27")
regex = re.compile(r'3[0-9]\d{10}')
for root,dirname, files in os.walk(directory):
for file in files:
if file.endswith(".log") or file.endswith(".txt"):
f=open(os.path.join(root,file))
for line in f.readlines():
searchedstr = regex.findall(line)
for word in searchedstr:
print "String found: " + word
print "File: " + os.path.join(root,file)
break
f.close()
答案 0 :(得分:5)
os.walk
是递归目录行走 - 其文档说:
在目录中生成文件名 树也走树 自上而下或自下而上。
所以你得到你要求的东西;-)
如果您不需要递归,请改用os.listdir
。由于os.walk
默认情况下自上而下,你也可以在第一个目录之后切断循环,但这很麻烦。 os.listdir
很简单:
>>> for filename in os.listdir(r"c:\python26\\"):
... if filename.endswith('.txt') or filename.endswith('.log'): print filename
...
lxml-wininst.log
MySQL-python-wininst.log
py2exe-wininst.log
PyXML-wininst.log
scons-wininst.log