안녕하세요. Python으로 파일 및 디렉토리에 대한 조작이 필요한 경우,
os 모듈로도 작업이 가능하지만 이번 글에서는 해당 작업에 특화된
또 다른 모듈인 shutil 모듈에 대하여 간략하게 주요 함수들을 정리해 보겠습니다.
참고로, shutil 모듈은 파이썬 표준 라이브러리이므로, 별도의 설치가 필요하지 않습니다.
복사 관련 함수: copy, copy2, copytree
1. copy
먼저 copy 함수는 파일을 복사할 수 있는 기본적인 shutil의 함수입니다.
이 함수는 파일의 수정 시간 등의 메타데이터는 복사하지 않고,
오직 파일의 내용만 복사하는 특징을 가지고 있습니다.
사용 방법 코드 예시는 다음과 같습니다.
import shutil
# 'source.txt'를 현재 디렉토리에 'destination.txt'라는 이름으로 복사
shutil.copy('source.txt', 'destination.txt')
# 'source.txt'를 'backup' 디렉토리로 복사 (디렉토리 경로로 지정 시 원본 파일 이름 유지)
shutil.copy('source.txt', 'backup/')
2. copy2
또 다른 복사 함수인 copy2는 copy와 사용법 자체는 거의 동일합니다.
그러나, 해당 함수는 파일의 메타데이터까지 모두 복사하는 특징이 있습니다.
# shutil.copy와 사용법은 동일하나, 메타데이터까지 함께 복사
shutil.copy2('source.txt', 'destination.txt')
3. copytree
copytree는 디렉토리 전체를 재귀적으로 복사할 때 사용되는 함수입니다.
즉, 폴더 전체를 복사하는 과정과 매우 유사하다고 생각하시면 됩니다.
# 'my_folder' 디렉토리를 'backup_folder'로 복사
shutil.copytree('my_folder', 'backup_folder')
이동 관련 함수: move
shutil.move는 리눅스의 mv 명령어와 유사한 기능을 진행하는 함수로,
파일 또는 디렉토리의 이동을 담당하고, 때로는 이름 변경 기능도 수행합니다.
사용 방법에 대한 예시 코드 스니펫은 아래와 같습니다.
# source.txt 파일을 destination.txt로 이름 변경
shutil.move('source.txt', 'destination.txt')
# my_directory 디렉토리를 new_directory로 이름 변경
shutil.move('my_directory', 'new_directory')
# my_directory 디렉토리를 new_path 하위로 이동
shutil.move('my_directory', 'new_path/my_directory')
# 파일을 이동시키면서 이름도 변경 (예: 'old_folder/old_name.txt'를 'new_folder/new_name.txt'로)
shutil.move('old_folder/old_name.txt', 'new_folder/new_name.txt')
삭제 관련 함수: rmtree
리눅스의 rm과 유사한 기능을 수행하는 함수로 shutil.rmtree가 있습니다.
단, 하위 디렉토리까지 모두 삭제를 진행하므로, 매우 유의해서 사용해야 합니다.
# my_directory 와 하위의 모든 파일 및 디렉토리 삭제
shutil.rmtree('my_directory')
기타 기능 함수
이 외에도 shutil 모듈에서는 디스크 사용량 확인이나
압축 및 압축 해제 기능을 수행하는 것도 가능합니다.
이러한 기능을 수행하는 각 함수의 코드 예시는 다음과 같습니다.
# 특정 디렉토리의 디스크 사용량 파악
total, used, free = shutil.disk_usage('/')
# 압축 파일 생성('zip', 'tar', 'gztar', 'bztar', 'xztar' 등 포맷 가능)
# ex) 'data' 디렉토리를 'compressed_data.tar.gz'로 압축
shutil.make_archive('compressed_data', 'gztar', 'data')
# 압축 해제
# ex) 'compressed_data.tar.gz' 파일의 압축을 풀어 'data_extracted' 디렉토리에 저장
shutil.unpack_archive('compressed_data.tar.gz', 'data_extracted')
이 글이 파이썬을 활용한 디렉토리 작업에 도움이 되셨기를 기원합니다.
잘 봐주셔서 감사합니다.
'Python > Utils' 카테고리의 다른 글
파이썬 sentry(오류 모니터링 툴) 연결 방법 정리 (4) | 2024.10.26 |
---|---|
파이썬으로 쿠버네티스 리소스 생성 코드 예제 (2) | 2024.09.20 |
파이썬 pdb 디버거 사용 방법 정리 (0) | 2024.08.08 |