walk()方法语法格式如下:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
onerror -- 可选, 需要一个 callable 对象,当 walk 需要异常时,会调用。
followlinks -- 可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。
当前使用os.walk代码遍历整个目录,并读取文件,找出文件内容的关键字,并写到指定文件中
# -*- coding: utf-8 -*- import os #遍历文件,查找后缀名为.m或者.h的文件,其它文件忽略不做检查 def findAllFiles(path): find_files = [] for root, dirs, files in os.walk(path): for file in files: pathWithFile = os.path.join(root,file) #root当前文件路径本身+ file(查询到的文件名称)组成绝对路径 if os.path.splitext(pathWithFile)[1] in [".m",".h"]:#指定查找以.m和.h的文件 find_files.append(pathWithFile) else: pass return find_files # read file def readfile (readfilepath): keywords = ["#","//","/*","*","/**","*/"] #搜索文件关键词 with open(readfilepath,'r',encoding='utf-8') as f: #使用with open方法打开文件,使用encoding参数主要解决文件内容为中文的问题 newStr =[] for lines in f: for i in range(len(keywords)): if keywords[i] in lines: newStr.append(lines) return newStr def writeContent(writefilepath): getFilePath = findAllFiles("D:/test/mmm/") with open(writefilepath,'a',encoding='utf-8') as wf : for i in range(len(getFilePath)): getContent = readfile(getFilePath[i]) for j in range(len(getContent)): gc = getContent[j] wf.write(gc) wf.close() if __name__ == '__main__': testPath = "D:/test/Content.txt" writeContent(testPath)