2017-09-07 5 views
0

나는 일련의 명명 스키마를 사용하여 디렉토리에 파일을 재귀 적으로 추가하고 싶습니다.재귀 파일 복사

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 /를 읽으려면 한 걸음 더 배우고 보너스 포인트는 여기에있는 파일을보고 크롤러가 현재 디렉토리에없는 파일 만 찾도록하십시오. .

답변

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)