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

基于文本列表在目录树中查找并复制文件的Python脚本需求

Python脚本:根据TXT文件列表查找并复制目标文件

嘿,我懂你找了一堆脚本都没完全对上需求的郁闷——要从嵌套的子目录里(就是你说的abc、xyz这些目录下还有abc开头的次级子目录那种),精准匹配TXT文件里的文件名列表,然后把找到的文件都复制到指定目录对吧?给你整了个针对性的脚本,直接能用:

import os
import shutil

def copy_files_from_list(txt_path, target_dir):
    # 创建目标目录(如果不存在)
    os.makedirs(target_dir, exist_ok=True)
    
    # 读取TXT文件里的文件名列表,转成集合(查找更快)
    with open(txt_path, 'r', encoding='utf-8') as f:
        target_files = {line.strip() for line in f if line.strip()}
    
    # 遍历当前工作目录下的所有文件(包括嵌套子目录)
    current_dir = os.getcwd()
    for root, dirs, files in os.walk(current_dir):
        for file in files:
            if file in target_files:
                # 构建源文件路径和目标路径
                src_path = os.path.join(root, file)
                dest_path = os.path.join(target_dir, file)
                
                # 处理重名文件:如果目标路径已存在,添加数字后缀
                counter = 1
                while os.path.exists(dest_path):
                    name, ext = os.path.splitext(file)
                    dest_path = os.path.join(target_dir, f"{name}_{counter}{ext}")
                    counter += 1
                
                # 复制文件
                try:
                    shutil.copy2(src_path, dest_path)
                    print(f"已复制: {src_path} -> {dest_path}")
                except Exception as e:
                    print(f"复制失败 {src_path}: {str(e)}")

# -------------------------- 配置参数 --------------------------
# 替换成你的TXT文件路径(比如当前目录下的file_list.txt)
INPUT_TXT = "file_list.txt"
# 替换成你要复制到的目标目录路径
TARGET_DIRECTORY = "/volumes/target_dir"
# -------------------------------------------------------------

if __name__ == "__main__":
    copy_files_from_list(INPUT_TXT, TARGET_DIRECTORY)

关键细节说明:

  • 高效查找:把TXT里的文件名转成集合,比列表查找快很多,尤其是当文件列表很大的时候
  • 自动创建目录:目标目录不存在的话,脚本会自动帮你创建,不用手动建
  • 重名处理:如果目标目录里已经有同名文件,脚本会自动加_1、_2这种后缀,避免覆盖原有文件
  • 完整文件属性保留:用shutil.copy2()而不是copy(),会保留文件的创建时间、修改时间这些元数据

你需要调整的地方:

  • 把INPUT_TXT改成你的实际TXT文件路径(比如如果TXT在当前目录,直接写文件名就行)
  • 把TARGET_DIRECTORY改成你想要复制到的目录路径

额外小提示:

如果你的TXT里不是完整文件名,而是文件名的一部分(比如只存了abc0123里的0123),那你可以把判断条件改成if file.startswith(xxx)或者if xxx in file,根据你的实际需求调整就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:32:40