用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='\t', addindent='\t', newl='\n',encoding='utf-8')
    fp.close()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM