递归文件复制

时间:2017-09-07 15:45:59

标签: python spyder

我想以递归方式将文件添加到具有设置命名方案的目录中。

import os
def all_files(directory):
for path, dirs, files in os.walk(directory):
    for f in files:
        yield os.path.join(path, f)


xlsm_files = [f for f in all_files('H:\Practice')
           if f.endswith('.xlsm')]
print(xlsm_files)

from shutil import copyfile               
for i in (xlsm_files):
    copyfile(i,'H:/Practice/Crawler Test/i.xlsm')

对于此示例,我有两个名为的文件:name1.xlsm和name2.xlsm。

目前我可以使用xlsm_files [1]和xlsm_files [2]进行单独添加。但是,我想最终拥有100个文件并且单独编写会花费很长时间,更不用说随着列表的增长,我可能无法跟上。

**奖励积分如果我可以学习更进一步阅读H:/ Practice / Crawler Test /,查看其中的文件,并且只让抓取工具找到目前不在的文件。目录

1 个答案:

答案 0 :(得分:0)

找到第一个问题的解决方案,仍在处理奖金

import fnmatch
import os
import shutil
rootPath = 'H:\\Practice\\'
destDir = 'C:\Users\******\Downloads\Crawler Test'
matches = []
for root, dirnames, filenames in os.walk(rootPath):
  for filename in fnmatch.filter(filenames, '*.xlsm'):
      matches.append(os.path.join(root, filename))
      a = (os.path.join(root, filename))
      print(a)
      shutil.copy2(a, destDir)