我定义了一个搜索路径,但正在搜索其他文件夹中的文件

时间:2011-04-28 13:23:22

标签: python regex path

有人可以告诉我为什么下面的代码正在搜索指定路径中的子文件夹。我只想要搜索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()

1 个答案:

答案 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