如何将一个文件复制到一个文件夹中?

时间:2018-08-15 19:07:16

标签: python for-loop shutil

我想制作一个程序,可以将一个文件(例如图像)复制到包含多个文件夹的另一个目录中。通过将所有图像复制到另一个目录很容易,但是我希望将其作为一个图像复制到一个文件夹。

我循环了两个目录中的每个元素并将它们全球化。我尝试将一个文件复制到文件夹中,但出现错误。我认为我无法做到的主要问题是因为我缺乏如何在循环时将一个文件复制到一个文件夹的想法。希望您能给我一些建议。

import os
import shutil
path = os.listdir('C:\\Users\\User\\Desktop\\img')
#dst1 = os.path.abspath('C:\\Users\\User\\Desktop\\abc')
idst =  os.listdir('C:\\Users\\User\\Desktop\\abc')

def allimgs():
    counter = 0
    for imgs in path:
        if imgs.endswith('.JPG'):
            counter += 1
             #if hits the 24th images then stop and 
             #copy the first until 24 to another 24 folders one by one
            if counter > 24: 
               break
            else:
                src = os.path.join('C:\\Users\\User\\Desktop\\img',imgs)

def allfolders():                
    for folders in idst:
        if folders.endswith('.db'):
            continue #to skip the file ends with .db
        dst = os.path.join('C:\\Users\\User\\Desktop\\abc',folders)

shutil.copy(allimgs(),allfolders()) #here is where i stuck

1 个答案:

答案 0 :(得分:0)

首先,使两个函数都返回字符串列表,这些字符串包含将要复制的图像的完整路径以及将其复制到的目录。然后,将allimgs()allfolders()的结果保存到变量中并遍历它们。

第一个函数的外观如下:

def allimgs():
     ret = []
     counter = 0
     for imgs in path:
         if imgs.endswith('.JPG'):
            counter += 1
         #if hits the 24th images then stop and 
         #copy the first until 24 to another 24 folders one by one
         if counter > 24: 
              break
          else:
              src = os.path.join('C:\\Users\\User\\Desktop\\img',imgs)
              ret.append(src)
     return ret

(我把另一个留给您作为练习)

然后遍历它们:

for image_path in allimgs():
  for folder_path in allfolders():
    shutil.copy(image_path, folder_path)