使用Python将多个目录中的文件复制到一个目录中

时间:2015-04-16 20:30:18

标签: python directory operating-system copy

使用python将文件从多个目录复制到一个目录的最简单方法是什么?更清楚的是,我有一棵看起来像这样的树

+Home_Directory
  ++folder1
   -csv1.csv
   -csv2.csv
  ++folder2
   -csv3.csv
   -csv4.csv

我希望将csv1,csv2,...等全部放入一些没有文件夹层次结构的指定目录中。

+some_folder
   -csv1.csv
   -csv2.csv
   -csv3.csv
   -csv4.csv

我看过的一些解决方案:

使用shutil.copytree将无法正常工作,因为它将保留不是我想要的文件结构。

我正在使用的代码与此问题中发布的代码非常相似: copy multiple files in python 问题是我不知道如何迭代地执行此操作。据推测,它只是另一个for循环,但我不熟悉os和shutil库,以确切知道我正在迭代什么。对此有何帮助?

3 个答案:

答案 0 :(得分:4)

这就是我的想法。我假设你只是从1个目录中提取csv文件。

RootDir1 = r'*your directory*'
TargetFolder = r'*your target folder*'
for root, dirs, files in os.walk((os.path.normpath(RootDir1)), topdown=False):
        for name in files:
            if name.endswith('.csv'):
                print "Found"
                SourceFolder = os.path.join(root,name)
                shutil.copy2(SourceFolder, TargetFolder) #copies csv to new folder

编辑:在RootDir1的末尾缺少一个'。您也可以将其作为入门指南,使其按预期工作。

答案 1 :(得分:1)

import glob
import shutil
#import os
dst_dir = "E:/images"
print ('Named explicitly:')
for name in glob.glob('E:/ms/*/*/*'):    
    if name.endswith(".jpg") or name.endswith(".pdf")  : 
        shutil.copy(name, dst_dir)
        print ('\t', name)

答案 2 :(得分:1)

您可以使用它来将所有子文件夹从同一目录移动到不同目录到任何您想要的位置。

import shutil
import os
path=r'* Your Path*'
arr = os.listdir(path)
for i in range(len(arr)):
  source_dir=path+'/'+arr[i]
  target_dir = r'*Target path*'
    
  file_names = os.listdir(source_dir)
    
  for file_name in file_names:
      shutil.move(os.path.join(source_dir, file_name), target_dir)