2013-08-09 3 views
2

2 개의 디렉토리에서 다른 디렉토리로 모든 파일을 복사하고 싶지만 파일의 이름이 같은 경우 대상 디렉토리에서 한 번 복사됩니다. 여기 파이썬에서 파일 복사 (복제)

코드입니다 :

def cp_files_tmp(src, dest):#copy dir's files into a dir 
    src_files = os.listdir(src) 
    for file_name in src_files: 
     full_file_name = os.path.join(src, file_name) 
     if (os.path.isfile(full_file_name)): 
      shutil.copy(full_file_name, dest) 

dest = 'C:/temp/' 
src_A= 'C:/sil/in/'  
src_B= 'C:/olw/in/' 

cp_files_tmp(src_A, dest) # cp files 
cp_files_tmp(src_B, dest) # cp files 
+0

두 번째 함수 호출이 같은 이름의 파일을 덮어 쓴다고 생각합니다. –

답변

3

그러나 예상 행동은 무엇인가? 두 파일의 이름이 같은 경우 복사하면 첫 번째 파일을 두 번째 파일로 덮어 쓰고 차이가 끝나는 방법은 없습니다. 어떤 종류의 이름 통일을 제안해야합니다. 예를 들어, 파일 X가있는 경우 두 번째 X를 X.tmp 또는 이와 유사한 형식으로 복사하십시오.

def cp_files_tmp(src, dest): 
    src_files = os.listdir(src) 
    for file_name in src_files: 
     full_file_name = os.path.join(src, file_name) 
     full_destination=os.path.join(dest,file_name) 
     if (os.path.isfile(full_file_name)): 
      while os.path.exists(full_destination): 
       full_destination += ".duplicate" 
      shutil.copy(full_file_name, full_destination) 

dest = 'C:/temp/' 
src_A= 'C:/sil/in/'  
src_B= 'C:/olw/in/' 

cp_files_tmp(src_A, dest) # cp files 
cp_files_tmp(src_B, dest) # cp files 

이 파일을 초래할해야는 C에서 복사/SIL/C 및/OLW/C에 : 단순히 FILE_NAME.duplicate에 결과 이름을 변경/온도 및 중복의 경우