본문 바로가기

Study Information Technology

Python의 shutil을 활용한 고급 파일 작업

728x90
반응형

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 모듈의 사용법을 깊이 이해하는 데 도움이 되기를 바랍니다. 추가적인 질문이 있으면 언제든지 물어보세요!

728x90
반응형