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

如何用Python按列表复制指定文件至新目录并记录未找到文件?

解决按列表复制文件并记录未找到文件的问题

嗨,作为Python新手能主动找解决方案已经超棒啦!我来帮你把这段代码的细节讲透,还会补上记录未找到文件的功能,完全适配你的需求~

一、先搞懂原代码的路径设置

其实你不用手动写路径哦,原代码里的三个路径都是通过弹窗让你可视化选择的:

  • filePath:点击弹窗后选择你那个包含E3004、D0402这类文件名的文本文件
  • folderPath:选择你要搜索的目标目录(也就是这些文件原本存放的地方)
  • destination:选择你要复制文件到的新目录

这样完全不用纠结路径怎么写,选对文件/文件夹就行!

二、修正逻辑+添加记录未找到文件的功能

原代码有个小逻辑问题:它是遍历目标目录里的所有文件,判断是否在你的文件名列表里,但这样没法知道列表里哪些文件根本不在目标目录里。我们调整下逻辑,改成遍历你列表里的每个文件名,去目标目录找是否存在,这样就能精准记录未找到的文件啦。

下面是修改后的完整代码:

import os
import shutil
from tkinter import Tk, filedialog

# 初始化tkinter弹窗
root = Tk()
root.withdraw()  # 隐藏主窗口,只显示弹窗

# 弹窗选择需要的文件和目录
filePath = filedialog.askopenfilename(title="选择包含文件名的文本文件")
folderPath = filedialog.askdirectory(title="选择要搜索的目标目录")
destination = filedialog.askdirectory(title="选择文件要复制到的新目录")

# 读取文本文件里的文件名,去掉每行的换行和空格
files_to_find = []
with open(filePath, "r", encoding="utf-8") as fh:
    for row in fh:
        filename = row.strip()
        if filename:  # 跳过空行
            files_to_find.append(filename)

# 用来记录未找到的文件名
missing_files = []

# 遍历要找的每个文件名
for filename in files_to_find:
    # 拼接目标目录的完整文件路径
    source_file = os.path.join(folderPath, filename)
    # 判断文件是否存在
    if os.path.isfile(source_file):
        # 复制文件到新目录
        shutil.copy(source_file, destination)
        print(f"已复制文件: {filename}")
    else:
        # 未找到的文件加入列表
        missing_files.append(filename)
        print(f"未找到文件: {filename}")

# 将未找到的文件名写入新的文本文件
if missing_files:
    # 把未找到的文件列表写入到新目录下的记录文件(你也可以改路径和文件名)
    missing_file_path = os.path.join(destination, "未找到的文件记录.txt")
    with open(missing_file_path, "w", encoding="utf-8") as mf:
        for file in missing_files:
            mf.write(file + "\n")
    print(f"未找到的文件已记录到: {missing_file_path}")
else:
    print("所有文件都已找到并复制完成!")

三、关键改动说明

  • 调整了遍历逻辑:从遍历目标目录文件改为遍历你的文件名列表,这样能准确捕捉到哪些文件不存在
  • 新增了missing_files列表,专门存放未找到的文件名
  • 最后把未找到的文件名写入到新目录下的未找到的文件记录.txt里(你可以自己改这个文件名和保存路径)
  • 加入了空行判断,避免文本文件里的空行被当成文件名处理
  • 用os.path.isfile()判断是否是文件(避免把目录当成文件处理)

这样运行代码后,你选好对应的文件和目录,就能自动完成复制,还能看到哪些文件没找到,记录也会自动生成哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:03:15