python解析xml實例

以下,一個銀行卡打標籤後導出的數據ide

<?xml version="1.0" encoding="ISO-8859-1"?>
<annotation>
<filename>a001.jpg</filename>
<folder>users/three33//card</folder>
<source>
<submittedBy>three</submittedBy>
</source>
<imagesize>
<nrows>2240</nrows>
<ncols>3968</ncols>
</imagesize>
<object>
<name>numbers</name>
<deleted>0</deleted>
<verified>0</verified>
<occluded>no</occluded>
<attributes>6228480808055442079</attributes>
<parts>
<hasparts/>
<ispartof/>
</parts>
<date>12-May-2019 06:21:39</date>
<id>0</id>
<type>bounding_box</type>
<polygon>
<username>anonymous</username>
<pt>
<x>927</x>
<y>1278</y>
</pt>
<pt>
<x>3269</x>
<y>1278</y>
</pt>
<pt>
<x>3269</x>
<y>1475</y>
</pt>
<pt>
<x>927</x>
<y>1475</y>
</pt>
</polygon>
</object>
</annotation>
View Code

(上面的代碼沒法保留格式,仍是截張圖吧spa

現要將其中的標記的四個座標和銀行卡號讀取出來,並保存到文本文件。因爲有幾百張圖片,須要批處理。code

代碼:xml

 1 import os
 2 import sys
 3 import xml.etree.cElementTree as ET
 4 
 5 
 6 from_path = "./card"     //輸入文件夾
 7 to_path = "./cardout"    //輸出文件夾
 8 files = os.listdir(from_path)
 9 files.sort()      #按字典序排序
10 
11 
12 i = 1
13 for filename in files:
14     
15     dir1 = os.path.join(from_path, filename)
16     tree = ET.ElementTree(file=dir1)
17     root = tree.getroot()
18 
19     new_filename = filename[:-4] + ".txt"
20     dir2 = os.path.join(to_path,new_filename)
21 
22     fobj = open(dir2,'w+')
23 
24     print("time: %d, from_filename: %s, to_filename: %s" % (i, dir1, dir2))
25 
26     for elem in tree.iterfind('object/polygon/pt'):
27         fobj.write((elem[0].text + ',' + elem[1].text + ','))
28         #print(elem[0].text + ',' + elem[1].text + ',')
29 
30     for elem in tree.iterfind('object/attributes'):
31         fobj.write(elem.text)
32 
33     fobj.close()
34     i = i + 1
35     

效果:blog

相關文章
相關標籤/搜索