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

如何使用Shutil复制含Tax_的文件?脚本实现问题求助

解决方法:修正Shutil文件复制脚本的问题

我来帮你排查下脚本里的关键问题,然后给出可行的修正方案:

你的脚本存在的几个核心问题

  • 循环遍历对象错误:你写的for files in src:是在逐个遍历src这个路径字符串的字符,而不是遍历目标文件夹里的文件,这完全不符合你的需求。
  • 误用shutil.which():这个函数的作用是在系统PATH环境变量中查找可执行程序的路径,根本不适合用来定位指定文件夹里的普通文件,所以用它肯定找不到目标文件。
  • 路径拼接与判断逻辑问题:就算你遍历到了文件名,直接用shutil.copy(files,dst)会报错,因为files只是纯文件名,不是完整的文件路径;另外你写的'bdd' in files和需求的“包含Tax_”完全不匹配。

修正后的脚本方案

方案一:使用os模块遍历文件

import shutil
import os

# 定义源文件夹和目标文件夹路径
src_dir = os.path.expanduser('~/Documents/Tax 2018')
dst_dir = os.getcwd()

# 遍历源文件夹下的所有文件/文件夹名称
for filename in os.listdir(src_dir):
    # 判断文件名是否包含"Tax_"
    if 'Tax_' in filename:
        # 拼接完整的源文件路径
        src_file_path = os.path.join(src_dir, filename)
        # 确保只处理文件(跳过子文件夹)
        if os.path.isfile(src_file_path):
            shutil.copy(src_file_path, dst_dir)

方案二:使用glob模块(更简洁)

glob模块可以直接通过通配符匹配文件,代码更简洁:

import shutil
import os
import glob

src_dir = os.path.expanduser('~/Documents/Tax 2018')
dst_dir = os.getcwd()

# 用通配符匹配所有包含"Tax_"的文件,直接获取完整路径
for src_file_path in glob.glob(os.path.join(src_dir, '*Tax_*')):
    # 确保只处理文件
    if os.path.isfile(src_file_path):
        shutil.copy(src_file_path, dst_dir)

关键说明

  • os.path.join():用来拼接文件路径,避免手动拼接字符串出现的跨平台问题(比如Windows和Linux的路径分隔符不同)。
  • os.path.isfile():过滤掉源文件夹中的子文件夹,只复制文件。
  • 如果你需要匹配以Tax_开头的文件,把通配符改成Tax_*即可(对应方案二),或者把判断条件改成filename.startswith('Tax_')(对应方案一)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:39:38