Python/Utils

파이썬 디렉토리 관리 모듈 shutil 함수 정리

jimmy_AI 2024. 10. 14. 00:09
반응형

안녕하세요. 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')

 

이 글이 파이썬을 활용한 디렉토리 작업에 도움이 되셨기를 기원합니다.

잘 봐주셔서 감사합니다.