zoukankan      html  css  js  c++  java
  • 用python批量生成简单的xml文档

      最近生成训练数据时,给一批无效的背景图片生成对应的xml文档,我用python写了一个简单的批量生成xml文档的demo,遇见了意外的小问题,记录一下。

      报错问题为:ImportError: No module named 'xml.dom'; 'xml' is not a package

      看见No module named “xxx”时想的是不就是没安装xml包嘛,还不简单,install一下不就好了,然而并没什么用,xml是python本生就带的。其实出现这种错误的原因是自己的命名规则问题,将python程序命名为"xml.py"导致的。让运行python程序时出现自导现象,从而出错。一个小错误,发现时我自己都笑了。

      顺便贴一下代码,作为一个小demo分享一下。

      

    import os
    import xml.dom.minidom
    
    read_file='jpg'
    
    for file_name in os.listdir(read_file):
        new_txtname=file_name.split('.')[0]
    
    
        #创建一个空的Dom文档对象
        doc = xml.dom.minidom.Document()
        #创建根节点,此根节点为annotation
        annotation = doc.createElement('annotation')
        #将根节点添加到DOm文档对象中
        doc.appendChild(annotation) 
    
        folder = doc.createElement('folder')
        #内容写入
        folder_text = doc.createTextNode('ee')
        folder.appendChild(folder_text)
        annotation.appendChild(folder)
    
        filename = doc.createElement('filename')
        filename_text = doc.createTextNode(file_name)
        filename.appendChild(filename_text)
        annotation.appendChild(filename)
    
        path = doc.createElement('path')
        path_text = doc.createTextNode('path is null')
        path.appendChild(path_text)
        annotation.appendChild(path)
    
        source = doc.createElement('source')
        databass = doc.createElement('databass')
        databass_text = doc.createTextNode('Unknown')
        source.appendChild(databass)
        databass.appendChild(databass_text)
        annotation.appendChild(source)
    
        size = doc.createElement('size')
        width = doc.createElement('width')
        width_text = doc.createTextNode('875')
        height = doc.createElement('height')
    
        height_text = doc.createTextNode('656')
        depth = doc.createElement('depth')
        depth_text = doc.createTextNode('1')
        size.appendChild(width)
        width.appendChild(width_text)
        size.appendChild(height)
        height.appendChild(height_text)
        size.appendChild(depth)
        depth.appendChild(depth_text)
        annotation.appendChild(size)
    
        segmented = doc.createElement('segmented')
        segmented_text = doc.createTextNode('0')
        segmented.appendChild(segmented_text)
        annotation.appendChild(segmented)
    
        #写入xml文本文件中
        fp = open('xml/%s.xml' %new_txtname , 'w+')
        doc.writexml(fp, indent='	', addindent='	', newl='
    ',encoding='utf-8')
        fp.close()
    

      

  • 相关阅读:
    实现实体类和Xml相互转化
    创建型设计模式之原型模式(Prototype)
    创建型设计模式之建造者模式(Builder)
    行为型设计模式之状态模式(State)
    行为型设计模式之职责链模式(Chain of Responsibility)
    行为型设计模式之解释器模式(Interpreter)
    行为型设计模式之模板方法(Template Method)
    结构型设计模式之享元模式(Flyweight)
    结构型设计模式之外观模式(Facade)
    获取必应壁纸
  • 原文地址:https://www.cnblogs.com/lvsling/p/9469185.html
Copyright © 2011-2022 走看看