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

如何用Python在XML文件中查找指定字符串并移动文件至目标目录

解决XML文件内容包含指定字符串的移动问题

你的代码目前只是将所有XML文件移动到目标目录,但没有检查文件内容是否包含'drone'字符串,这是核心问题。另外代码存在缩进错误,会导致运行报错。以下是修正后的实现方案:

修正后的完整代码

import os
import shutil

print("移动前源目录与目标目录内容:")   
source = r"D:\TomProject\Images"   
destination = r"D:\TomProject\txt"

# 确保目标目录存在,避免移动时出错
os.makedirs(destination, exist_ok=True)

# 打印源目录结构
for root, dirs, files in os.walk(source):   
    print(f"当前路径: {root}")   
    print(f"子目录: {dirs}")   
    print(f"文件: {files}\n")   
# 打印目标目录初始内容
print(f"目标目录初始内容: {os.listdir(destination)}\n")

# 遍历源目录,筛选符合条件的XML文件
for root, dirs, files in os.walk(source):   
    for file in files:   
        # 筛选XML后缀文件(兼容大小写后缀)
        if file.lower().endswith(".xml"):  
            file_path = os.path.join(root, file)
            # 读取文件内容,检查是否包含'drone'
            try:
                with open(file_path, 'r', encoding='utf-8') as f:
                    content = f.read()
                    # 若要忽略大小写匹配,可改为 if 'drone' in content.lower()
                    if 'drone' in content:
                        # 移动文件到目标目录
                        shutil.move(file_path, os.path.join(destination, file))
                        print(f"已移动文件: {file_path}")
            except Exception as e:
                print(f"处理文件 {file_path} 时出错: {str(e)}")

print("\n移动后目标目录内容:")   
print(os.listdir(destination))

关键改进点

  • 增加内容检查逻辑:打开每个XML文件,读取内容并判断是否包含'drone'字符串,仅移动符合条件的文件
  • 修复缩进错误:修正原代码中缩进不正确的语句,避免运行报错
  • 添加异常处理:捕获文件读取或移动时的异常,避免程序中途崩溃
  • 确保目标目录存在:使用os.makedirs确保目标目录存在,避免移动时因目录不存在报错
  • 更严谨的后缀判断:使用endswith结合lower(),避免因大小写问题漏判XML文件(如.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.15 04:55:19