该程序用了三个库:
- 对文件路径的处理;
- 对xml文件的处理;
- 利用pandas将数据转换成DateFrame写入Excel
可以说这是一个综合应用;
import os
import pandas as pd
from xml.dom.minidom import parse
def get_filenames(file_dir):
'''
获取所有xml的文件名
:param file_dir:xml存放的文件路径
:return:xml文件名列表
'''
for root, dirs, files in os.walk(file_dir):
# print('files:', files) # 当前路径下所有非目录子文件
return files
def get_exam_data(path):
'''
提取xml文件信息
:param path:
:return:
'''
ls = []
domTree = parse(path)
# 文档根元素
rootNode = domTree.documentElement
# SceneName = rootNode.getElementsByTagName('SceneName')[0].firstChild.data
# 轮次 ShiftName
ShiftName = rootNode.getElementsByTagName('ShiftName')[0].firstChild.data
# 日期时间
ExamTime = rootNode.getElementsByTagName('ExamTime')[0].firstChild.data
examDate = ExamTime.split(' ', 1)[0]
examTime = ExamTime.split(' ', 1)[1]
# 机房
ExamRoomName = rootNode.getElementsByTagName('ExamRoomName')[0].firstChild.data
# 考生人数
StudentCount = rootNode.getElementsByTagName('StudentCount')[0].firstChild.data
# 将文件信息添加进列表
ls.append(ShiftName)
ls.append(ExamRoomName)
ls.append(StudentCount)
ls.append(examDate)
ls.append(examTime)
return ls
path = '统考/data/'
data_ls = []
for filename in get_filenames(path):
# 只取xml文件
if filename.split('.', 1)[1] == 'xml':
# 如果是xml文件,就提取数据,加入data_ls列表
data_ls.append(get_exam_data(f'{path}{filename}'))
# 表头
title = ['轮次', '机房', '考生人数', '日期', '时间']
df = pd.DataFrame(data_ls, columns=title)
# 写入excel
df.to_excel('exam.xlsx', index=False)
网友评论