首页 > 解决方案 > 将文件从文件夹复制到不同文件夹时出现问题

问题描述

我正在尝试遍历目录中以“R008”开头的文件并将它们复制到不同的文件夹(它们都在同一个目录中)。

import shutil
import os
source = 'D:\\source_folder\\'
dest1 = 'D:\\destination_folder\\' 

folder_name = input("What day of the month? ")
folder_path = (dest1 + folder_name)
i = 1

files = os.listdir(source)

for file in files:
    if file.startswith('R008'):
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
            shutil.copy(os.path.join(source, file), folder_path)

        if os.path.exists(folder_path):
            os.makedirs(folder_path + "_" + str(i))
            shutil.copy(os.path.join(source, file), folder_path + "_" + str(i))
            i += 1

我的问题是第一个文件总是被复制两次。为 4 个文件1创建 5 个文件夹。我不明白为什么

标签: pythonpython-3.x

解决方案


您有两个独立的测试,第一个的主体if(通过创建)第二个(存在)folder_path的条件为真。所以你最终会执行两个副本。如果您只想复制到根路径,而不是复制到扩展路径,只需将第二个设置为与原始路径绑定,例如:iffolder_pathifelseif

    if not os.path.exists(folder_path):
        os.makedirs(folder_path)
        shutil.copy(os.path.join(source, file), folder_path)
    else:  # Could be elif os.path.exists(folder_path), but you literally just verified it doesn't exist
        os.makedirs(folder_path + "_" + str(i))
        shutil.copy(os.path.join(source, file), folder_path + "_" + str(i))
        i += 1

推荐阅读