美文网首页
编排统考考场(基于xml文件)

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

作者: Noza_ea8f | 来源:发表于2020-09-10 08:45 被阅读0次

    该程序用了三个库:

    • 对文件路径的处理;
    • 对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)
    

    相关文章

      网友评论

          本文标题:编排统考考场(基于xml文件)

          本文链接:https://www.haomeiwen.com/subject/ebncsktx.html