【发布时间】:2021-10-20 18:12:44
【问题描述】:
我正在使用 shutil.copy 根据文件的文件名将文件发送到目录中的预期文件夹。
我在名为“Downloaded_Data”的文件夹中有以下文件列表:
Subject_Blue_Cold_D_A_1.csv
Subject_Blue_Cold_D_A_2.csv
Subject_Blue_Cold_D_A_3.csv
Subject_Blue_Cold_D_B_1.csv
Subject_Blue_Cold_D_B_2.csv
Subject_Blue_Cold_D_B_3.csv
Subject_Blue_Cold_D_C_1.csv
Subject_Blue_Cold_D_C_2.csv
Subject_Blue_Cold_D_C_3.csv
Subject_Blue_Mild_D_A_1.csv
Subject_Blue_Mild_D_A_2.csv
Subject_Blue_Mild_D_A_3.csv
Subject_Blue_Mild_D_B_1.csv
Subject_Blue_Mild_D_B_2.csv
Subject_Blue_Mild_D_B_3.csv
Subject_Blue_Mild_D_C_1.csv
Subject_Blue_Mild_D_C_2.csv
Subject_Blue_Mild_D_C_3.csv
Subject_Blue_Hot_D_A_1.csv
Subject_Blue_Hot_D_A_2.csv
Subject_Blue_Hot_D_A_3.csv
Subject_Blue_Hot_D_B_1.csv
Subject_Blue_Hot_D_B_2.csv
Subject_Blue_Hot_D_B_3.csv
Subject_Blue_Hot_D_C_1.csv
Subject_Blue_Hot_D_C_2.csv
Subject_Blue_Hot_D_C_3.csv
Subject_Red_Cold_D_A_1.csv
Subject_Red_Cold_D_A_2.csv
Subject_Red_Cold_D_A_3.csv
Subject_Red_Cold_D_B_1.csv
Subject_Red_Cold_D_B_2.csv
Subject_Red_Cold_D_B_3.csv
Subject_Red_Cold_D_C_1.csv
Subject_Red_Cold_D_C_2.csv
Subject_Red_Cold_D_C_3.csv
Subject_Red_Mild_D_A_1.csv
Subject_Red_Mild_D_A_2.csv
Subject_Red_Mild_D_A_3.csv
Subject_Red_Mild_D_B_1.csv
Subject_Red_Mild_D_B_2.csv
Subject_Red_Mild_D_B_3.csv
Subject_Red_Mild_D_C_1.csv
Subject_Red_Mild_D_C_2.csv
Subject_Red_Mild_D_C_3.csv
Subject_Red_Hot_D_A_1.csv
Subject_Red_Hot_D_A_2.csv
Subject_Red_Hot_D_A_3.csv
Subject_Red_Hot_D_B_1.csv
Subject_Red_Hot_D_B_2.csv
Subject_Red_Hot_D_B_3.csv
Subject_Red_Hot_D_C_1.csv
Subject_Red_Hot_D_C_2.csv
Subject_Red_Hot_D_C_3.csv
然后我需要将所有这些文件分类到一个名为“Input_Data”的文件夹中的预期子文件夹中。因此我需要根据它们的文件名将这些文件放入以下文件目录中:
Input_Data > Blue_Cold
> DA
> DB
> DC
> Blue_Mild
> DA
> DB
> DC
> Blue_Hot
> DA
> DB
> DC
> Red_Cold
> DA
> DB
> DC
> Red_Mild
> DA
> DB
> DC
> Red_Hot
> DA
> DB
> DC
这是我目前使用的代码:
import os
source_folder = os.path.join("Downloaded_Data")
for filename in os.listdir(source_folder):
name_parts = filename.split("_")
first_folder = "_".join([name_parts[1], name_parts[2]])
second_folder = "D" + name_parts[4]
dest_root_dir = Path('Input_Data')
dest_dir = dest_root_dir.joinpath(first_folder, second_folder, filename)
dest_dir.mkdir(exist_ok=True)
dest_filepath = dest_dir.joinpath(filename)
shutil.copy2(filename, dest_dir)
我收到以下错误:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-50-257fc6665649> in <module>()
29 dest_dir.mkdir(exist_ok=True)
30 dest_filepath = dest_dir.joinpath(filename)
---> 31 shutil.copy2(filename, dest_dir)
32
33
~\Anaconda3\lib\shutil.py in copy2(src, dst, follow_symlinks)
255 if os.path.isdir(dst):
256 dst = os.path.join(dst, os.path.basename(src))
--> 257 copyfile(src, dst, follow_symlinks=follow_symlinks)
258 copystat(src, dst, follow_symlinks=follow_symlinks)
259 return dst
~\Anaconda3\lib\shutil.py in copyfile(src, dst, follow_symlinks)
118 os.symlink(os.readlink(src), dst)
119 else:
--> 120 with open(src, 'rb') as fsrc:
121 with open(dst, 'wb') as fdst:
122 copyfileobj(fsrc, fdst)
FileNotFoundError: [Errno 2] No such file or directory: 'Subject_Blue_Cold_D_A_1.csv .csv'
如果此文件存在并且之前已被代码识别,为什么我会收到此错误消息?如何解决此问题,以便这些文件最终位于正确的文件夹中?
【问题讨论】:
标签: python file directory copy shutil