본문 바로가기
  • Hello_
Python

[Python] shutil - 폴더 및 파일 복사하기

by LDwDL 2022. 9. 9.
728x90
반응형

오늘은 shutil 라이브러리를 활용하여 특정 폴더 및 파일을 복사하는 방법에 대해 포스팅하겠다.

 

shutil.copytree()

shutil.copytree()를 활용하여 특정 경로를 손쉽게 복사할 수 있다.

copytree()의 argument는 2개이며 "복사할 경로", "복사될 경로" 순으로 입력해주면 된다.

 

경로 형태

 

[폴더 복사]

예시로 LIDC 경로 내에 "LIDC-IDRI-1" 폴더를 상위 workspace 경로 내 "LIDC-IDRI-1_copy"로 복사해보겠다.

"./LIDC/LIDC-IDRI-1"  --> "./LIDC-IDRI-1_copy"

pwd
# 'c:\\Users\\beam\\workspace'

import shutil

target_folder = './LIDC/LIDC-IDRI-1/'
shutil.copytree(target_folder,'./LIDC_IDRI-1_copy')

 

복사된 경로 형태

 

다음과 같이 폴더 자체가 이름도 바뀌어 복사된 것을 확인할 수 있다.

 

 

shutil.copy(), shutil.copyfile()

shutil.copy() 혹은 shutil.copyfile()을 활용하여 파일도 복사 가능하다.

 

[파일 복사]

target_file = './LIDC/LIDC-IDRI-1/1-001.dcm'
shutil.copy(target_file,'./copy_file.dcm')

복사된 경로 형태

 

shutil.copy2()

shutil.copy2()는 위의 copy 혹은 copyfile 함수와는 다르게 복사될 때 파일의 메타데이터도 가져온다.

 

[파일 복사]

shutil.copy2(target_file,'./copy2_file.dcm')

 

[파일의 메타데이터 비교]

os.path.getatime("파일")을 활용하여 파일의 마지막 액세스 시간을 확인할 수 있다.

이를 활용하여 복사되었던 파일들의 엑세스 시간을 확인해 보겠다.

import os

os.path.getatime(target_file)
# 1662713260.2533343

os.path.getatime('./copy_file.dcm')
# 1662723248.8223164

os.path.getatime('./copy2_file.dcm')
# 1662713260.2533343

print(os.path.getatime(target_file) == os.path.getatime('./copy2_file.dcm'))
# True

위의 결과를 통해 shutil.copy2()를 활용하면 복사할 파일의 메타데이터도 함께 복사된다는 것을 알 수 있다.

 

 

위의 코드를 바탕으로 shutil 라이브러리를 활용하여 폴더 및 파일들을 쉽게 복사할 수 있다는 것을 알 수있다.

728x90
반응형

댓글