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

如何解决Google Colab中shutil.copy出现的FileNotFoundError错误

解决Google Colab中shutil.copyfile的FileNotFoundError问题

核心问题拆解

从报错信息和代码细节来看,导致错误的关键原因有三个:

  • 路径拼写不一致:flooding_folder中的LR_PyTprch_API_Ray_Tune拼写错误,正确应为LR_PyTorch_API_Ray_Tune(与no_flooding_folder的前缀保持一致)
  • 目标参数类型错误:shutil.copyfile的第二个参数必须是完整的目标文件路径,不能仅传入文件夹路径
  • 目标文件夹未预创建:如果目标目录本身不存在,直接执行复制操作会触发找不到路径的错误

修正后的完整代码

import os
import shutil

# 修正路径拼写错误,确保两个文件夹路径前缀一致
flooding_folder = '/content/drive/MyDrive/Learning/LR_PyTorch_API_Ray_Tune/input/images/flooding/'
no_flooding_folder = '/content/drive/MyDrive/Learning/LR_PyTorch_API_Ray_Tune/input/images/no_flooding/'

# 预创建目标文件夹,exist_ok=True避免重复创建时触发报错
os.makedirs(flooding_folder, exist_ok=True)
os.makedirs(no_flooding_folder, exist_ok=True)

for file in s1_file_list:
  for directory in os.listdir(source_dir_1):
    src_file = os.path.join(source_dir_1, directory, file)
    # 先校验源文件是否存在,避免额外报错
    if not os.path.exists(src_file):
        print(f"跳过不存在的源文件:{src_file}")
        continue
    if file[:-7] in labels_flood:
      # 拼接完整的目标文件路径:文件夹路径 + 文件名
      dst_file = os.path.join(flooding_folder, file)
      shutil.copyfile(src_file, dst_file)
    else:
      dst_file = os.path.join(no_flooding_folder, file)
      shutil.copyfile(src_file, dst_file)

额外验证与排查步骤

如果问题仍存在,可执行以下命令确认路径状态:

  • 检查目标父目录是否存在:
!ls -l "/content/drive/MyDrive/Learning/LR_PyTorch_API_Ray_Tune/input/images/"
  • 若目录不存在,手动创建完整路径:
!mkdir -p "/content/drive/MyDrive/Learning/LR_PyTorch_API_Ray_Tune/input/images/flooding/" "/content/drive/MyDrive/Learning/LR_PyTorch_API_Ray_Tune/input/images/no_flooding/"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:50:24