繁体   English   中英

如何在不复制python中的文件夹结构的同时从文件夹(包括子文件夹)复制所有文件

[英]How to copy all files from a folder (including sub-folder) while not copying the folder structure in python

有人可以帮助我如何将文件夹中的所有文件复制到python中的另一个目标文件夹。 问题是我不想复制子目录结构。 但我想要其中的文件。

例如,假设在根文件夹中,有3个文件夹,每个文件夹包含10个文件。 每个文件夹中还有2个文件夹,每个文件夹包含5个文件。 (因此每个第一级文件夹总共有20个文件和2个子目录)。 总计60个文件。

我希望将所有这60个文件复制到一个目标目录,丢弃子文件夹结构。

这是我试过的代码:

# path : source folder path
# compiled_path: destination folder path
w = os.walk(path)
for root, dirs, files in w:
    for dir_name in dirs:
        file_list_curent_dir = os.walk(path+"\\"+dir_name).next()[2]
        for item in file_list_curent_dir:
            shutil.copy(path+"\\"+dir_name+"\\"+item, compiled_path+"\\"+item )

它复制文件的最高级别,而不是子目录中的文件夹。

非常感谢您的宝贵时间。

import os
import shutil

for root, dirs, files in os.walk('.'):  # replace the . with your starting directory
   for file in files:
      path_file = os.path.join(root,file)
      shutil.copy2(path_file,'destination_directory') # change you destination dir

你可以使用这个原始函数(但是当你想以递归方式遍历目录时最好的方法是os.walk)

from shutil import copyfile
import shutil
def your_function(dir):
    for folder in os.listdir(dir):
        folder_full_path = os.path.join(dir,folder)
        move_down_and_delete(folder_full_path,folder_full_path)

def move_down_and_delete(input,copy_to_dir):
    if os.path.isfile(input):
        dest = os.path.join(copy_to_dir,os.path.basename(input))
        print dest,input
        copyfile(input,dest)
        return
    for child in os.listdir(input):
         current_obj_path = os.path.join(input, child)
         move_down_and_delete(current_obj_path,copy_to_dir)
         if not os.path.isfile(current_obj_path):shutil.rmtree(current_obj_path)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM