0

我正在尝试编写一个代码,允许我将文件从各个子文件夹复制到一个新文件夹。主要问题以及为什么从一开始就不是一件直截了当的事情是所有文件的开头和结尾都相同,我需要的文件中只有 1 个字母的变化。

我不断收到一条错误消息:“FileNotFoundError:[Errno 2] 没有这样的文件或目录:'20210715 10.1_Plate_R_p00_0_B04f00d0.TIF'”

到目前为止,这就是我所拥有的:

import os,fnmatch, shutil
mainFolder = r"E:\Screening\202010715\20210715 Screening"
dst = r"C:\Users\**\Dropbox (**)\My PC\Desktop\Screening Data\20210715"

for subFolder in os.listdir(mainFolder):
    sf = mainFolder+"/"+subFolder
    id os.path.isdir(sf):
        subset = fnmatch.filter(os.listdir(sf), "*_R_*")  
        
for files in subset:
    if '_R_' in files:
        shutil.copy(files, dst)

请帮忙!

4

1 回答 1

0

问题是您没有提供文件的完整路径shutil.copy,因此它假定该文件存在于您从中运行脚本的文件夹中。代码的另一个问题是,subset在您能够复制下一个循环中匹配的文件之前,该变量在每个循环中都会被替换。

import os, fnmatch, shutil
mainFolder = r"E:\Screening\202010715\20210715 Screening"
dst = r"C:\Users\**\Dropbox (**)\My PC\Desktop\Screening Data\20210715"
matches = [] # To store the matches

for subFolder in os.listdir(mainFolder):
    sf = mainFolder + "/" + subFolder
    if os.path.isdir(sf):
        matches.extend([f'{sf}/{file}' for file in fnmatch.filter(os.listdir(sf), "*_R_*")]) # Append the full path to the file
            
        
for files in matches:
    shutil.copy(files, dst)    
于 2021-07-22T09:04:04.600 回答