You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量读取文件夹中XML文件并将.tif扩展名替换为.jpg

批量替换XML文件中标签的.tif扩展名为.jpg

问题背景

需处理指定文件夹下所有XML文件,将<filename>标签内的.tif扩展名替换为.jpg,例如把000000000002.tif修改为000000000002.jpg。此前用Notepad++未完成需求,现基于提供的代码片段完善解决方案。

XML示例

<?xml version="1.0"?>
<annotation>
<filename>000000000002.tif</filename>
<source>
<annotation>ESRI ArcGIS Pro</annotation>
</source>
<size>
<width>128</width>
<height>128</height>
<depth>3</depth>
</size>
<object>
<name>1</name>
<bndbox>
<xmin>85.82</xmin>
<ymin>0.00</ymin>
<xmax>128.00</xmax>
<ymax>11.95</ymax>
</bndbox>
</object>
<object>
<name>1</name>
<bndbox>
<xmin>42.56</xmin>
<ymin>0.00</ymin>
<xmax>85.88</xmax>
<ymax>6.05</ymax>
</bndbox>
</object>
</annotation>

完整Python解决方案

以下是实现批量处理的完整代码:

import xml.etree.ElementTree as ET
import os

# 替换为你的XML文件夹实际路径
target_folder = "your/xml/folder/path"

# 遍历文件夹下所有XML文件
for file_name in os.listdir(target_folder):
    if file_name.endswith(".xml"):
        file_path = os.path.join(target_folder, file_name)
        
        # 解析XML文件
        tree = ET.parse(file_path)
        root = tree.getroot()
        
        # 查找所有<filename>标签并替换扩展名
        for filename_tag in root.findall("filename"):
            original_text = filename_tag.text
            if original_text and original_text.endswith(".tif"):
                filename_tag.text = original_text.replace(".tif", ".jpg")
        
        # 保存修改后的文件(直接覆盖原文件,需备份可自行添加复制逻辑)
        tree.write(file_path, encoding="utf-8", xml_declaration=True)

print("所有XML文件处理完成")

代码说明

  • os.listdir(target_folder):遍历目标文件夹下的所有文件,筛选出XML格式文件
  • ET.parse(file_path):直接解析XML文件,比读取文本再解析更高效简洁
  • root.findall("filename"):精准定位所有<filename>标签;若标签嵌套在其他节点下,可改用root.findall(".//filename")递归查找所有层级的该标签
  • tree.write(...):保存修改后的文件,指定编码和XML声明,避免乱码或格式丢失

内容的提问来源于stack exchange,提问作者salih muhammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:35:35