中企动力网站建设,湛江企业网站seo,怎么用video做网站开头,朝阳网站开发联系电话要求#xff1a;
1#xff0c;遍历文件夹下所有的.xml文件
2#xff0c;从.xml文件中提取关键字以及左右十个字符
3#xff0c;输出到excel 一#xff1a;遍历文件夹找到所有xml文件及其路径 for root, dirs, files in os.walk(self.inputFilePath):for file in files:…要求
1遍历文件夹下所有的.xml文件
2从.xml文件中提取关键字以及左右十个字符
3输出到excel 一遍历文件夹找到所有xml文件及其路径 for root, dirs, files in os.walk(self.inputFilePath):for file in files:targetFilePath os.path.join(root, file)if not targetFilePath.endswith(.xml):continuexmlFileData open(targetFilePath,r,encodingutf-8).read() os.walk() 方法是一个简单易用的文件、目录遍历器可以帮助我们高效的处理文件、目录方面的事情
def walk(top, topdownTrue, onerrorNone, followlinksFalse):
参数解释 top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。topdown的默认值是“True”表示首先返回根目录树下的文件然后遍历目录树下的子目录。值设为False时则表示先遍历目录树下的子目录返回子目录下的文件最后返回根目录下的文件。topdown设值不同os.walk()返回的列表元素顺序不同但不是相反所以遍历后的结果也不同onerror – 可选需要一个 callable 对象当 walk 需要异常时会调用。followlinks – 可选如果为 True则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭)如果为 False则优先遍历 top 的子目录。 我们只传入一个目录参数它会遍历当前目录及其子目录。
返回的是一个三元组(root,dirs,files)
root 所指的是当前正在遍历的这个文件夹的本身的地址dirs 是一个 list 内容是该文件夹中所有的目录的名字(不包括子目录)files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)二对xml文件提取关键字及其左右的十个字符
xmlFileData open(targetFilePath,r,encodingutf-8).read()
for m in re.finditer(self.keyWords, xmlFileData, re.I):#re.I标志是大小写不敏感extractKeywords xmlFileData[m.start()-OFFSET:m.end()OFFSET]self.keywordInfoList.append((targetFilePath,extractKeywords)) 用到了re模块的finditer方法用过re模块的相信都用过findall(方法该方法能一次性找出所有的正则匹配结果但是也有局限性其不能提供所在的位置并且是一起返回的如果有数万个一起返回来就不太好处理了因此要使用finditer()函数来实现每次只返回一个并且返回所在的位置。
re.finditer(pattern, string, flags0)
参数
参数描述pattern匹配的正则表达式string要匹配的字符串。flags标志位用于控制正则表达式的匹配方式如是否区分大小写多行匹配等等。参见正则表达式修饰符 - 可选标志针对re.finditer返回的迭代对象每一个迭代子对象都有start和end方法start定位到关键字开始的位置end定位到关键字结尾的位置我们再定义一个偏移值建议用宏可以统一修改来提取关键字及其左右偏移的字符
三写入excel def writeToExcel(self):workBook openpyxl.Workbook()sheetPos 0for ele in self.keywordInfoList:oneLine list()rootPathSplit ele[0].split(\\)firstDirIndex rootPathSplit.index(self.firstDirName)#获取当前目录的索引newSheet rootPathSplit[firstDirIndex1]if newSheet not in workBook.sheetnames:workSheet workBook.create_sheet(newSheet, sheetPos)sheetPos 1oneLine.extend(rootPathSplit[firstDirIndex1:])oneLine.append(ele[1])workSheet.append(oneLine)print(oneLine)workBook.save(xmlExtractKeyword.xlsx)
用到了openpyxl模块下面给出常用的方法
创建
from openpyxl import Workbook
# 实例化
wb Workbook()
# 激活 worksheet
ws wb.active
打开已有 from openpyxl import load_workbookwb2 load_workbook(文件名称.xlsx)
储存数据
# 方式一数据可以直接分配到单元格中(可以输入公式)
ws[A1] 42
# 方式二可以附加行从第一列开始附加(从最下方空白处最左开始)(可以输入多行)
ws.append([1, 2, 3])
# 方式三Python 类型会被自动转换
ws[A3] datetime.datetime.now().strftime(%Y-%m-%d)
创建表sheet
# 方式一插入到最后(default)ws1 wb.create_sheet(Mysheet)
# 方式二插入到最开始的位置ws2 wb.create_sheet(Mysheet, 0)
选择表sheet
# sheet 名称可以作为 key 进行索引ws3 wb[New Title]ws4 wb.get_sheet_by_name(New Title)ws is ws3 is ws4
True
查看表名sheet
# 显示所有表名print(wb.sheetnames)
[Sheet2, New Title, Sheet1]
# 遍历所有表for sheet in wb:
... print(sheet.title)
更多方法请见python-- openpyxl详解_像风一样的男人的博客-CSDN博客