오늘은 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 라이브러리를 활용하여 폴더 및 파일들을 쉽게 복사할 수 있다는 것을 알 수있다.
'Python' 카테고리의 다른 글
[Python] tqdm - 알고리즘 진행률 확인하기 (0) | 2022.09.10 |
---|---|
[Python] for loop - enumerate, zip 사용 (0) | 2022.09.09 |
[Python] uuid - UUID 생성하기 (0) | 2022.08.30 |
[Python] time - 날짜 및 알고리즘 소요시간 구하는 법 (0) | 2022.08.30 |
[Python] glob - 같은 확장자인 파일만 획득하기 (0) | 2022.08.30 |
댓글