xml坐标数量统计脚本

import openpyxl
import os
import xml.dom.minidom as dom
import xml.parsers.expat as xpe


def get_task_folder(root_path, folder_list=list()):
    content_list = os.listdir(root_path)
    for content in content_list:
        is_dir = os.path.join(root_path, content)
        if os.path.isdir(is_dir):
            get_task_folder(is_dir, folder_list)
        else:
            print(root_path)
            folder_list.append(root_path)
            continue
    temp = list(set(folder_list))
    temp.sort(key=folder_list.index)
    return temp


def get_object_count(task_folder):
    tasks = os.listdir(task_folder)
    count = 0
    for task in tasks:
        task_url = os.path.join(task_folder, task)
        # 解析xml文件
        try:
            doc = dom.parse(task_url)
            print(task)
            # 根节点
            annotation = doc.documentElement
            objects = annotation.getElementsByTagName("object")
            count += len(objects)
        except xpe.ExpatError as xe:
            print(task + ":" + xe.__repr__())
    return count


if __name__ == '__main__':
    workbook = openpyxl.Workbook()  # 建立一个工作本
    sheet = workbook.active  # 激活sheet
    sheet.title = '统计'  # 对sheet进行命名
    clo_name = ["分类", "类别", "名称", "框数"]
    for col in range(1, 5):
        sheet.cell(row=1, column=col).value = clo_name[col - 1]
    path = ".\\Annotations"
    task_folders = get_task_folder(path)
    print(task_folders)
    for row, task_folder in enumerate(task_folders):
        folder_name = os.path.basename(task_folder)
        category = task_folder.split("\\")[-2]
        classify = task_folder.split("\\")[-3]
        count = get_object_count(task_folder)
        sheet.cell(row=row + 2, column=4).value = count
        sheet.cell(row=row + 2, column=3).value = folder_name
        sheet.cell(row=row + 2, column=2).value = category
        sheet.cell(row=row + 2, column=1).value = classify

    # 保存
    workbook.save(".\\统计.xls")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_38185649

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值