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
相关产品推荐
相关产品推荐

