编排统考考场(基于xml文件)

2020-09-10  本文已影响0人  Noza_ea8f

该程序用了三个库:

可以说这是一个综合应用;

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)
上一篇 下一篇

猜你喜欢

热点阅读