python 生成XML文件

#! /usr/bin/python
 
import os, sys
import glob
from PIL import Image
 
# ICDAR image path
src_img_dir = "./images"
# ICDAR ground truth path
#src_txt_dir = "./gt"
src_ann_dir = "./Annotations"
img_Lists = glob.glob(src_img_dir + '/*.jpg')
 
img_basenames = []  # e.g. 100.jpg
for item in img_Lists:
    img_basenames.append(os.path.basename(item))
 
img_names = []  # e.g. 100
for item in img_basenames:
    temp1, temp2 = os.path.splitext(item)
    img_names.append(temp1)
 
for img in img_names:
    img_path = src_img_dir + '/' + img + '.jpg'
    img_root_path = os.path.abspath(img_path)
    im = Image.open(img_path)
    width, height = im.size
    # open the crospronding txt file
#    gt = open(src_txt_dir + '/' + img + '.txt').read().splitlines()
 
    # write in xml file
    # os.mknod(src_txt_dir + '/' + img + '.xml')
    xml_file = open((src_ann_dir + '/' + img + '.xml'), 'w')
    xml_file.write('<annotation>\n')
    xml_file.write('\t<folder>img</folder>\n')
    xml_file.write('\t<filename>' + str(img) + '.jpg' + '</filename>\n')
    xml_file.write('\t<path>' + img_root_path + '</path>\n')
    xml_file.write('\t<source>\n')
    xml_file.write('\t\t<database>' + 'Unknown' + '</database>\n')
    xml_file.write('\t</source>\n')
    xml_file.write('\t<size>\n')
    xml_file.write('\t\t<width>' + str(width) + '</width>\n')
    xml_file.write('\t\t<height>' + str(height) + '</height>\n')
    xml_file.write('\t\t<depth>3</depth>\n')
    xml_file.write('\t</size>\n')
    xml_file.write('\t<segmented>0</segmented>\n')
    # write the region of text on xml file
#    for img_each_label in gt:
#    spt = img_each_label.split(',')
    for i in range(2):
        xml_file.write('\t<object>\n')
        xml_file.write('\t\t<name>text</name>\n')
        xml_file.write('\t\t<pose>Unspecified</pose>\n')
        xml_file.write('\t\t<truncated>0</truncated>\n')
        xml_file.write('\t\t<difficult>0</difficult>\n')
        xml_file.write('\t\t<robndbox>\n')
        xml_file.write('\t\t\t<cx>' + str(0) + '</cx>\n')
        xml_file.write('\t\t\t<cy>' + str(1) + '</cy>\n')
        xml_file.write('\t\t\t<w>' + str(2) + '</w>\n')
        xml_file.write('\t\t\t<h>' + str(3) + '</h>\n')
        xml_file.write('\t\t\t<angle>' + str(4) + '</angle>\n')
        xml_file.write('\t\t</robndbox>\n')
        xml_file.write('\t\t<extra/>\n')
        xml_file.write('\t</object>\n')
 
    xml_file.write('</annotation>')
    
    

    

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Python生成XML文件,可以使用xml.dom.minidom模块或xml.etree.ElementTree模块。 在xml.dom.minidom模块中,可以使用Document类来创建XML文档对象,然后使用createElement()、appendChild()和createTextNode()等方法来创建元素和文本节点,并将它们添加到文档中。最后,可以使用toprettyxml()方法将文档格式化为字符串或将其写入文件。以下是一个使用xml.dom.minidom模块创建XML文件的示例代码: ```python from xml.dom.minidom import Document doc = Document() root = doc.createElement("root") doc.appendChild(root) element = doc.createElement("element") text = doc.createTextNode("This is a test!") element.appendChild(text) root.appendChild(element) xml_str = doc.toprettyxml(indent=" ") with open("output.xml", "w") as f: f.write(xml_str) ``` 在xml.etree.ElementTree模块中,可以使用ElementTree类来创建XML文档对象,然后使用Element()和SubElement()等方法来创建元素,并使用text属性设置元素的文本内容。最后,可以使用ElementTree的write()方法将文档写入文件。以下是一个使用xml.etree.ElementTree模块创建XML文件的示例代码: ```python import xml.etree.ElementTree as ET root = ET.Element("root") element = ET.SubElement(root, "element") element.text = "This is a test!" tree = ET.ElementTree(root) tree.write("output.xml") ``` 以上是两种常用的方法来生成XML文件的示例代码。你可以根据自己的需求选择其中一种方法来使用。 #### 引用[.reference_title] - *1* [怎么用python创建文件-如何用Python创建生成xml文档文件的方法](https://blog.csdn.net/weixin_37988176/article/details/109417617)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python学习(十四):Python如何创建一个xml文件](https://blog.csdn.net/weixin_43580890/article/details/129343510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枫呱呱

如果这篇博文对你有用,求打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值