http://blog.csdn.net/authorzhh/article/details/8933758
#!/usr/bin/env python # 1.py # use UTF-8 # Python 3.3.0 # 检索目录下所有文件中包含指定字符串的文件 import os import re # 枚举dirPath目录下的所有文件 def ListFiles(dirPath): #begin fileList = [] for root, dirs, files in os.walk(dirPath): # 注意os.walk的功能 #begin for fileObj in files: #begin fileList.append(os.path.join(root, fileObj)) #end #end return fileList #end def FindString(filePath, regex): #begin fileObj = open(filePath, 'r') for eachLine in fileObj: #begin if re.search(regex, eachLine, re.I): #begin print(fileObj) #打印文件对象 break #end #end #end def main(): #begin fileDir = "F:" + os.sep + "aaa" # 查找F:\aaa 目录下 regex = 'include' # 包含include 的文件 fileList = ListFiles(fileDir) print(fileList) for fileObj in fileList: #begin FindString(fileObj, regex) #end os.system("pause") #end if __name__ == '__main__': #begin main() #end # 输出: # <_io.TextIOWrapper name='F:\\aaa\\1.cpp' mode='r' encoding='cp936'> # <_io.TextIOWrapper name='F:\\aaa\\2.h' mode='r' encoding='cp936'> # <_io.TextIOWrapper name='F:\\aaa\\3.c' mode='r' encoding='cp936'> # <_io.TextIOWrapper name='F:\\aaa\\4.h' mode='r' encoding='cp936'> # <_io.TextIOWrapper name='F:\\aaa\\5.cpp' mode='r' encoding='cp936'> # <_io.TextIOWrapper name='F:\\aaa\\6.h' mode='r' encoding='cp936'> # <_io.TextIOWrapper name='F:\\aaa\\我.cpp' mode='r' encoding='cp936'> # 遇到的问题有 # 如果做枚举到的文件不是文本文件, 例如rar文件, 就会有异常产生