Python의 shutil
을 활용한 고급 파일 작업
Overview
Python의 shutil
모듈은 파일과 디렉토리의 고급 작업을 쉽게 수행할 수 있도록 돕는 유용한 도구입니다. 이 모듈은 파일 복사, 이동, 삭제와 같은 작업뿐만 아니라 압축 파일 처리와 같은 기능도 제공합니다. 아래에서는 shutil
모듈의 주요 기능과 이들을 활용하는 방법을 상세히 설명하겠습니다.
1. 파일 복사
shutil
모듈의 가장 기본적인 기능 중 하나는 파일 복사입니다. shutil.copy()
함수를 사용하면 파일을 지정된 경로로 복사할 수 있습니다. 이 함수는 원본 파일의 내용을 대상 파일로 복사하며, 대상 파일이 이미 존재하면 덮어씁니다.
예시:
import shutil
# 원본 파일과 대상 파일 경로
source = 'path/to/source/file.txt'
destination = 'path/to/destination/file.txt'
# 파일 복사
shutil.copy(source, destination)
에러 처리:
- FileNotFoundError: 원본 파일이 존재하지 않을 때 발생합니다. 경로가 정확한지 확인하세요.
- PermissionError: 파일을 복사할 권한이 없을 때 발생합니다. 파일과 디렉토리에 대한 적절한 권한을 확인하세요.
2. 디렉토리 복사
shutil.copytree()
함수를 사용하면 디렉토리와 그 하위의 모든 파일 및 디렉토리를 복사할 수 있습니다. 이 함수는 원본 디렉토리를 대상으로 하여 전체 디렉토리 트리를 복사합니다.
예시:
import shutil
# 원본 디렉토리와 대상 디렉토리 경로
src_dir = 'path/to/source/dir'
dst_dir = 'path/to/destination/dir'
# 디렉토리 복사
shutil.copytree(src_dir, dst_dir)
에러 처리:
- FileExistsError: 대상 디렉토리가 이미 존재할 때 발생합니다. 기존 디렉토리를 삭제하거나 다른 경로를 지정하세요.
- PermissionError: 디렉토리 접근 권한이 없을 때 발생합니다. 적절한 권한을 확인하세요.
3. 파일 및 디렉토리 이동
shutil.move()
함수는 파일 또는 디렉토리를 새로운 위치로 이동합니다. 이 함수는 원본 파일이나 디렉토리를 삭제하고, 새로운 위치로 옮깁니다.
예시:
import shutil
# 원본 파일과 대상 파일 경로
src = 'path/to/source/file.txt'
dst = 'path/to/destination/file.txt'
# 파일 이동
shutil.move(src, dst)
에러 처리:
- FileNotFoundError: 원본 파일이 존재하지 않을 때 발생합니다. 경로를 확인하세요.
- PermissionError: 이동할 권한이 없을 때 발생합니다. 권한을 확인하고 적절히 수정하세요.
4. 압축 파일 다루기
shutil
모듈은 압축 파일을 생성하고 추출하는 기능도 제공합니다. shutil.make_archive()
함수를 사용하면 디렉토리를 압축 파일로 만들 수 있으며, shutil.unpack_archive()
함수를 사용하여 압축 파일을 추출할 수 있습니다.
압축 파일 생성 예시:
import shutil
# 디렉토리를 압축 파일로 생성
base_name = 'path/to/archive'
format = 'zip' # 'zip', 'tar', 'gztar', 'bztar', 'xztar'
shutil.make_archive(base_name, format, 'path/to/source/dir')
압축 파일 추출 예시:
import shutil
# 압축 파일 추출
archive_path = 'path/to/archive.zip'
extract_dir = 'path/to/extracted/dir'
shutil.unpack_archive(archive_path, extract_dir)
에러 처리:
- FileNotFoundError: 압축 파일이 존재하지 않을 때 발생합니다. 경로와 파일이 존재하는지 확인하세요.
- RuntimeError: 압축 파일 포맷이 올바르지 않거나 지원되지 않는 경우 발생할 수 있습니다. 압축 파일 포맷을 확인하세요.
5. 디스크 사용량 확인
shutil.disk_usage()
함수를 사용하여 특정 경로의 디스크 사용량을 확인할 수 있습니다. 이 함수는 경로에 대한 전체, 사용 중인, 남은 디스크 공간을 반환합니다.
예시:
import shutil
# 디스크 사용량 확인
path = '/'
usage = shutil.disk_usage(path)
print(f"Total: {usage.total} bytes")
print(f"Used: {usage.used} bytes")
print(f"Free: {usage.free} bytes")
에러 처리:
- PermissionError: 경로에 접근할 권한이 없을 때 발생합니다. 권한을 확인하고 수정하세요.
참고문서
이 문서가 shutil
모듈의 사용법을 깊이 이해하는 데 도움이 되기를 바랍니다. 추가적인 질문이 있으면 언제든지 물어보세요!
'Study Information Technology' 카테고리의 다른 글
Python의 subprocess 모듈 완벽 가이드 셸 명령어 실행과 시스템 프로세스 통합 (0) | 2024.08.19 |
---|---|
파이썬의 이터레이터 구현과 이터레이터 프로토콜 사용자 정의 반복 패턴 지원 (0) | 2024.08.19 |
Python의 traceback을 활용한 상세한 에러 보고로 디버깅 개선하기 (1) | 2024.08.19 |
Python의 signal 모듈을 활용한 비동기 이벤트 처리 (0) | 2024.08.18 |
Python의 GUI 개발 tkinter와 PyQt 비교 (3) | 2024.08.18 |