압축 파일을 해제할 때, 때로는 특정 폴더나 파일을 제외하고 싶을 수 있습니다. Python의 shutil
모듈을 사용하여 압축 파일을 해제할 때 특정 폴더나 파일을 제외하는 방법을 알아보겠습니다.
1. shutil
모듈 이해하기
shutil
모듈은 파일 및 디렉터리 작업에 사용되는 유용한 함수와 클래스를 포함하고 있습니다. 우리가 이번에 다룰 함수는 shutil.unpack_archive()
입니다. 이 함수를 사용하여 압축 파일을 해제할 수 있습니다.
2. shutil.unpack_archive()
함수 이용하기
shutil.unpack_archive(filename, extract_dir=None, format=None, members=None)
함수를 사용하여 압축 파일을 해제할 수 있습니다. 여기서 filename
은 압축 파일의 경로 및 파일 이름이고, extract_dir
은 압축 해제될 디렉터리 경로입니다.
3. 특정 폴더나 파일 제외하기
특정 폴더나 파일을 제외하려면, members
매개변수를 사용하여 압축 파일의 멤버 목록을 지정해야 합니다. 이 멤버 목록에는 압축 파일 내의 폴더 및 파일 경로를 포함하며, 이와 일치하는 멤버는 해제되지 않습니다.
import shutil
def unpack_zip_with_exclude(filename, extract_dir, exclude_paths):
# 압축 파일 해제
shutil.unpack_archive(filename, extract_dir)
# 제외할 폴더/파일 제거
for path in exclude_paths:
full_path = os.path.join(extract_dir, path)
if os.path.isdir(full_path):
shutil.rmtree(full_path)
elif os.path.isfile(full_path):
os.remove(full_path)
# 사용 예시
filename = 'archive.zip' # 압축 파일 이름
extract_dir = 'destination_folder' # 압축 해제할 디렉터리 경로
exclude_paths = ['folder_to_exclude', 'file_to_exclude.txt'] # 제외할 폴더/파일 경로 목록
unpack_zip_with_exclude(filename, extract_dir, exclude_paths)
위의 코드에서 unpack_zip_with_exclude()
함수는 압축 파일을 해제하고, 제외할 폴더와 파일을 제거합니다. exclude_paths
리스트에는 제외할 폴더와 파일의 경로를 지정하여 해당 항목들을 제외합니다.
마무리
Python의 shutil
모듈을 활용하여 압축 파일을 해제할 때 특정 폴더나 파일을 제외하는 방법을 알아보았습니다. 이를 통해 필요한 부분만 선택적으로 압축 해제할 수 있습니다. 따라서 여러 파일이 들어있는 압축 파일을 다룰 때 효율적인 작업을 할 수 있습니다.