2013-05-03 5 views
0

.js 파일 만 다른 기존 폴더에 복사하려는 폴더가 있습니다 (다른 하위 폴더와 함께).이 하위 폴더에는 첫 번째 파일은 폴더 만 포함하므로 파일이 없습니다.)특정 형식의 파일을 파이썬으로 복사하는 방법

파이썬으로 어떻게 할 수 있습니까? shutil.copytree를 시도했지만 일부 폴더가 이미 있기 때문에 실패합니다.

+0

왜이 용도로 파이썬이 필요합니까? –

+0

당신은 어떤 시스템을 가지고 있습니까? –

답변

2

사용 os.path.splitext 또는 glob.iglob

glob.iglob(pathname) 

복귀 글롭과 동일한 값을 산출하는 반복자() 없이 동시에 실제로 모든 저장.

os.walk으로 걷는 os.path.splitext의 솔루션을 제안합니다. 중복 트리에서 상대 경로를 찾으려면 os.path.relpath을 사용합니다.

source_dir이 원본 최상위 소스 폴더 인 dest_dir 최상위 대상 폴더입니다.

import os, shutil, glob 

source_dir = "F:\CS\PyA" 
dest_dir = "F:\CS\PyB" 

for root, dirnames, filenames in os.walk(source_dir): 
    for file in filenames: 
     (shortname, extension) = os.path.splitext(file) 
     if extension == ".txt" : 
      shutil.copy2(os.path.join(root,file), os.path.join(dest_dir, 
         os.path.relpath(os.path.join(root,file),source_dir))) 
1
from glob import glob 
from shutil import copy 
import os 

def copyJS(src, dst): 
    listing = glob(src + '/*') 
    for f in listing: 
     if os.path.isdir(f): 
      lastToken = f.split('/')[-1] 
      copyJS(src+'/' + lastToken, dst+ '/' + lastToken) 
     elif f[-3:] == '.js': 
      copy(f, dst) 
+1

copy2를 사용하면 각 파일의 모든 메타 데이터를 보존하는 것이 좋습니다. – CppLearner

+0

때로는 더 좋으며 때로는 필요하지 않습니다. copystat()를 수행하는 것은 zero-resource 명령이 아닙니다. 원래의 포스터는 원할 경우 copy2를 사용하는 것이 좋습니다. –

관련 문제