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

Python实现同名文件同步迁移:随符合条件的XML移动配套文件

同步迁移含指定标签XML的同名关联文件

你现在的代码已经能正确识别并移动包含car标签的XML文件,要同步迁移同名的其他格式文件(比如jpeg、txt),只需要在找到符合条件的XML后,提取它的文件名前缀,然后把源目录里所有同名的文件一起移动即可。

修改后的完整代码如下:

import shutil
from pathlib import Path
from xml.etree import ElementTree as ET


def contains_car(path):
    tree = ET.parse(path.as_posix())
    root = tree.getroot()
    for obj in root.findall('object'):
        rank = obj.find('name').text
        if rank == 'car':           
             return True
    return False


def move_car_related_files(src="D:\\TomProject\\Images\\", 
dst="D:\\TomProject\\Done"):
    src, dst = Path(src), Path(dst)
    # 精准遍历所有XML文件
    for xml_path in src.glob('*.xml'):
        if contains_car(xml_path):
            # 获取不带后缀的文件名前缀
            file_prefix = xml_path.stem
            # 匹配源目录下所有同名的关联文件
            for related_file in src.glob(f'{file_prefix}.*'):
                print(f'Moving {related_file.as_posix()} to {dst.as_posix()}')
                shutil.move(related_file, dst)

if __name__ == "__main__":
    move_car_related_files()

关键修改说明:

  • 把原函数名contains_drone改为contains_car,更贴合实际业务逻辑
  • 用src.glob('*.xml')替代src.iterdir(),直接精准筛选XML文件,避免无效遍历
  • 利用Path对象的stem属性提取无后缀文件名,以此匹配所有同名格式的文件
  • 通过src.glob(f'{file_prefix}.*')获取所有关联文件,实现批量移动

这样处理后,只要某个XML符合条件,它对应的所有同名文件(无论格式)都会被同步迁移到目标目录。

内容的提问来源于stack exchange,提问作者tom meskin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:25:21