python修改控件属性的方式有哪几种_python批量修改xml某些内容和属性

在训练时,有时候需要将jpg格式转换为png格式,顺便也要把jpg标注的xml文件转换为png的xml文件。例如,需要把xml文件中的图像后缀名“.jpg”批量去掉,这时候就需要批量修改Xml中的<filename>属性了。

比如:修改之前的文件:

1dfd2a6fd86c29e6bf065f1bc80e8845.png

修改后:

90b5b08b72d7fd2425b204b74f467337.png
import os
import os.path
import xml.dom.minidom
path="E:python_summaryimage_anoAno"
files=os.listdir(path)#返回文件夹中的文件名列表
#print(files)
s=[]
count=0
for xmlFile in files:
    if not os.path.isdir(xmlFile):#os.path.isdir()用于判断对象是否为一个目录
        #如果不是目录,则直接打开
        name1=xmlFile.split('.')[0]
        print(name1)
        dom=xml.dom.minidom.parse(path+''+xmlFile)
        #print(dom)
        root=dom.documentElement
        newfolder=root.getElementsByTagName('folder')
        #print(newfolder)
        newpath = root.getElementsByTagName('path')
        newfilename = root.getElementsByTagName('filename')
        newfilename[0].firstChild.data = name1
        with open(os.path.join(path, xmlFile), 'w') as fh:
            dom.writexml(fh)
            #print('写入name/pose OK!')
        count = count + 1

80945ba87eedadaf3c271263df0b84dd.png

参考:

CSDN-专业IT技术社区-登录​blog.csdn.net

【图像jpg格式批量转换为png格式技巧】

(1)、首先在你放图片的文件夹里新建一个记事本文件,取名为“图片批量转化”。要注意的一点就是,里面的图片要统一为一种格式。

(2)、如果想将jpg格式批量转化为png格式,那么就在刚才新建的记事本文档里输入“ren *.jpg *.png”。举一反三可知,如果是将png格式转化为jpg,那么就该这样写“ren *.png *.jpg”。这里要强调的一点就是,“ren”与“png”之后要加有一个空格。记事本文档保存后,将后缀名修改为“bat”。

(3)、最后一步就是双击“bat”后缀的这个文件,它会自动弹出一个窗口,不用管它,等几秒后自动消失,然后就发现所有的图片格式都变成我们想要的png格式了。

参考:

不用任何软件,批量转化图片格式-百度经验​jingyan.baidu.com
bdeacc3986fc0ecc487d08e34c384de5.png

【补充】

XML中的一些属性,比如bndbox中的xmin,ymin,xmax,ymax这四个值,在标记时,如果这些值为负数或者小数,要把他们转换为整数或者不能超越图像边界的值,这时候就需要批量修改。

修改时要注意每个Xml中的这四个值有多个对,也即是每幅图像可能有多个目标,从而对应的bndbox也有多个。

# coding=utf-8
import os
import os.path #批量修改Xml文件中的属性值
import xml.dom.minidom
#打开xml文档
path='E:python_summaryXml_Airpalne'
files=os.listdir(path)#得到文件夹下所有文件名称(存到列表)
#print(files)
for xmlFile in files:#遍历文件夹
    if not os.path.isdir(xmlFile):#判断是否是文件夹,不是文件夹才打开
        #将获取的xml文件名送入到dom解析
        #print(xmlFile)
        dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))
        root=dom.documentElement
        #获取标签对
        xmin=root.getElementsByTagName('xmin')
        ymin=root.getElementsByTagName('ymin')
        xmax=root.getElementsByTagName('xmax')
        ymax=root.getElementsByTagName('ymax')
        #修改属性值
        #xmin
        for j in range(len(xmin)):
            xmin[j].firstChild.data=int(float(xmin[j].firstChild.data))
            if (float(xmin[j].firstChild.data)< 0):
                xmin[j].firstChild.data=0
            print(xmin[j].firstChild.data)
        #ymin
        for u in range(len(ymin)):
            ymin[u].firstChild.data=int(float(ymin[u].firstChild.data))
            if (float(ymin[u].firstChild.data)< 0):
                ymin[u].firstChild.data=0
            print(ymin[u].firstChild.data)
        #xmax
        for v in range(len(xmax)):
            xmax[v].firstChild.data=int(float(xmax[v].firstChild.data))
            if (float(xmax[v].firstChild.data)< 0):
                xmax[v].firstChild.data=0
            print(xmax[v].firstChild.data)
        #ymax
        for s in range(len(ymax)):
            ymax[s].firstChild.data=int(float(ymax[s].firstChild.data))
            if (float( ymax[s].firstChild.data)< 0):
                ymax[s].firstChild.data=0
            print( ymax[s].firstChild.data)
        #保存修改到xml文件中
        with open(os.path.join(path,xmlFile),'w') as wn:
            dom.writexml(wn)
            print("修改完成!")

参考:

CSDN-专业IT技术社区-登录​blog.csdn.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
读取CSV文件: ```python import csv # 打开CSV文件 with open('data.csv', newline='') as csvfile: reader = csv.reader(csvfile) # 遍历CSV文件中的每一行 for row in reader: print(', '.join(row)) ``` 读取JSON文件: ```python import json # 打开JSON文件 with open('data.json') as jsonfile: data = json.load(jsonfile) # 遍历JSON文件中的每个对象 for obj in data: print(obj) ``` 读取XML文件: ```python import xml.etree.ElementTree as ET # 打开XML文件 tree = ET.parse('data.xml') root = tree.getroot() # 遍历XML文件中的每个元素 for child in root: print(child.tag, child.attrib) ``` 读取Avro文件: ```python import avro.schema from avro.datafile import DataFileReader from avro.io import DatumReader # 打开Avro文件 schema = avro.schema.parse(open("data.avsc").read()) reader = DataFileReader(open("data.avro", "rb"), DatumReader()) # 遍历Avro文件中的每条记录 for record in reader: print(record) reader.close() ``` 在PyQt5设计页面显示CSV文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import csv class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('CSV Viewer') self.setGeometry(200, 200, 800, 600) # 创建表格控件 table = QTableWidget(self) table.setGeometry(10, 10, 780, 580) # 打开CSV文件 with open('data.csv', newline='') as csvfile: reader = csv.reader(csvfile) # 遍历CSV文件中的每一行 for i, row in enumerate(reader): # 设置表格行数 table.setRowCount(i + 1) # 设置表格列数 table.setColumnCount(len(row)) # 设置表格内容 for j, value in enumerate(row): item = QTableWidgetItem(value) table.setItem(i, j, item) self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ``` 在PyQt5设计页面显示JSON文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import json class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('JSON Viewer') self.setGeometry(200, 200, 800, 600) # 创建表格控件 table = QTableWidget(self) table.setGeometry(10, 10, 780, 580) # 打开JSON文件 with open('data.json') as jsonfile: data = json.load(jsonfile) # 遍历JSON文件中的每个对象 for i, obj in enumerate(data): # 设置表格行数 table.setRowCount(i + 1) # 设置表格列数 table.setColumnCount(len(obj)) # 设置表格内容 for j, key in enumerate(obj.keys()): # 设置表格列标题 if i == 0: table.setHorizontalHeaderItem(j, QTableWidgetItem(key)) item = QTableWidgetItem(str(obj[key])) table.setItem(i, j, item) self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ``` 在PyQt5设计页面显示XML文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem import xml.etree.ElementTree as ET class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('XML Viewer') self.setGeometry(200, 200, 800, 600) # 创建树形控件 tree = QTreeWidget(self) tree.setHeaderLabels(['Tag', 'Text', 'Attributes']) tree.setGeometry(10, 10, 780, 580) # 打开XML文件 tree.clear() tree.setColumnCount(3) # 设置根节点 tree.header().setVisible(True) tree.header().setStretchLastSection(True) tree.setColumnWidth(0, 200) tree.setColumnWidth(1, 400) tree.setColumnWidth(2, 200) tree.setIndentation(20) tree.setAnimated(True) tree.setUniformRowHeights(True) tree.setAutoScroll(True) tree_root = QTreeWidgetItem(tree, ['root', '', '']) tree.addTopLevelItem(tree_root) tree_stack = [(root, tree_root)] while tree_stack: xml_elem, tree_elem = tree_stack.pop() # 设置元素标签 elem_name = xml_elem.tag elem_text = xml_elem.text.strip() if xml_elem.text else '' elem_attrs = ' '.join([f'{k}="{v}"' for k, v in xml_elem.items()]) tree_elem.setText(0, elem_name) tree_elem.setText(1, elem_text) tree_elem.setText(2, elem_attrs) # 遍历子元素 for child in xml_elem: child_elem = QTreeWidgetItem(tree_elem) tree_elem.addChild(child_elem) tree_stack.append((child, child_elem)) tree.expandToDepth(1) tree.resizeColumnToContents(0) self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ``` 在PyQt5设计页面显示Avro文件数据: ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem import avro.schema from avro.datafile import DataFileReader from avro.io import DatumReader class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('Avro Viewer') self.setGeometry(200, 200, 800, 600) # 创建表格控件 table = QTableWidget(self) table.setGeometry(10, 10, 780, 580) # 打开Avro文件 schema = avro.schema.parse(open("data.avsc").read()) reader = DataFileReader(open("data.avro", "rb"), DatumReader()) # 设置表格列数 table.setColumnCount(len(schema.fields)) # 设置表格列标题 for i, field in enumerate(schema.fields): table.setHorizontalHeaderItem(i, QTableWidgetItem(field.name)) # 遍历Avro文件中的每条记录 for i, record in enumerate(reader): # 设置表格行数 table.setRowCount(i + 1) # 设置表格内容 for j, field in enumerate(schema.fields): item = QTableWidgetItem(str(record[field.name])) table.setItem(i, j, item) reader.close() self.show() if __name__ == '__main__': app = QApplication(sys.argv) win = MainWindow() sys.exit(app.exec_()) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值