0Pricing
Python Academy · 강의

파일 작업을 위한 shutil

파일 복사, 이동 및 보관하기

파일 작업을 위한 shutil은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

shutil이란 무엇인가요?

shutil(셸 유틸리티) 모듈은 상위 수준의 파일 작업을 제공합니다. 파일 복사, 디렉터리 트리 삭제, 아카이브 생성 등을 수행할 수 있으며, 일상적인 작업을 위해 os를 기반으로 동작합니다.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/a.txt', 'w') as f:
    f.write('hello')
print('created a.txt')

파일 복사

shutil.copy(src, dst)는 파일의 내용과 권한 비트를 새 위치로 복사합니다.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/src.txt', 'w') as f:
    f.write('data')
shutil.copy('/tmp/shutil_demo/src.txt', '/tmp/shutil_demo/copy.txt')
print(os.path.exists('/tmp/shutil_demo/copy.txt'))

copy와 copy2 비교

shutil.copy2는 copy와 비슷하지만 타임스탬프와 같은 메타데이터도 보존합니다. 파일의 수정 시간이 중요할 때 사용하세요.

import shutil, os

os.makedirs('/tmp/shutil_demo', exist_ok=True)
with open('/tmp/shutil_demo/m.txt', 'w') as f:
    f.write('x')
shutil.copy2('/tmp/shutil_demo/m.txt', '/tmp/shutil_demo/m2.txt')
print('copied with metadata')

전체 디렉터리 트리 복사

shutil.copytree(src, dst)는 디렉터리 전체를 재귀적으로 복사합니다. dirs_exist_ok=True를 전달하는 경우가 아니면 대상 디렉터리가 이미 존재해서는 안 됩니다.

import shutil, os

os.makedirs('/tmp/tree_src/sub', exist_ok=True)
with open('/tmp/tree_src/sub/f.txt', 'w') as f:
    f.write('hi')
shutil.rmtree('/tmp/tree_dst', ignore_errors=True)
shutil.copytree('/tmp/tree_src', '/tmp/tree_dst')
print(os.path.exists('/tmp/tree_dst/sub/f.txt'))

파일 및 폴더 이동

shutil.move(src, dst)는 파일이나 디렉터리를 이동하거나 이름을 변경합니다. os.rename이 실패하는 파일 시스템 간 작업에서도 사용할 수 있습니다.

import shutil, os

os.makedirs('/tmp/move_demo', exist_ok=True)
with open('/tmp/move_demo/old.txt', 'w') as f:
    f.write('move me')
shutil.move('/tmp/move_demo/old.txt', '/tmp/move_demo/new.txt')
print(os.path.exists('/tmp/move_demo/new.txt'))

디렉터리 트리 삭제

shutil.rmtree(path)는 디렉터리와 그 안의 모든 항목을 삭제합니다. 되돌릴 수 없으므로 주의해서 사용하세요.

import shutil, os

os.makedirs('/tmp/to_delete/inner', exist_ok=True)
shutil.rmtree('/tmp/to_delete')
print('exists after rmtree:', os.path.exists('/tmp/to_delete'))

ignore_errors와 안전성

ignore_errors=True를 rmtree에 전달하면 경로가 없을 때 충돌을 피할 수 있어, 새로 실행하기 전에 정리할 때 편리합니다.

import shutil

shutil.rmtree('/tmp/never_existed', ignore_errors=True)
print('no error even though path was absent')

아카이브 만들기

shutil.make_archive(base_name, format, root_dir)는 한 번의 호출로 디렉터리를 zip 또는 tar 파일 하나로 묶습니다.

import shutil, os

os.makedirs('/tmp/arch_src', exist_ok=True)
with open('/tmp/arch_src/data.txt', 'w') as f:
    f.write('archive me')
path = shutil.make_archive('/tmp/my_archive', 'zip', '/tmp/arch_src')
print('created', os.path.basename(path))

아카이브 압축 풀기

shutil.unpack_archive(filename, extract_dir)는 이 과정을 되돌려 zip 또는 tar 파일의 압축을 풀고 폴더에 내용을 저장합니다.

import shutil, os

shutil.make_archive('/tmp/box', 'zip', '/tmp/arch_src')
shutil.unpack_archive('/tmp/box.zip', '/tmp/unpacked')
print(os.listdir('/tmp/unpacked'))

실행 파일 찾기

shutil.which(name)은 셸의 which 명령처럼 시스템 PATH에서 프로그램을 찾습니다. 전체 경로를 반환하거나, 찾지 못하면 None을 반환합니다.

import shutil

print(shutil.which('python3'))
print(shutil.which('definitely_not_a_real_program'))

디스크 사용량

shutil.disk_usage(path)는 해당 경로가 속한 파일 시스템의 전체 용량, 사용 중인 용량, 여유 공간을 바이트 단위로 보고합니다.

import shutil

usage = shutil.disk_usage('/')
print('total GB:', round(usage.total / 1e9, 1))
print('free GB:', round(usage.free / 1e9, 1))

빠른 확인

shutil에 대한 이해도를 확인해 보세요.

복습

파일 작업에 사용하는 shutil을 배웠습니다:

  • copy/copy2는 파일을 복사하고, copytree는 전체 트리를 복사합니다.
  • move는 이름을 변경하거나 위치를 옮기고, rmtree는 트리를 삭제합니다.
  • make_archive/unpack_archive는 zip과 tar를 처리합니다.
  • which와 disk_usage는 시스템 정보를 조회합니다.

다음 과정에서는 argparse로 명령줄 도구를 만들어 봅니다.

자주 묻는 질문

“파일 작업을 위한 shutil” 강의는 무료인가요?

네 — “파일 작업을 위한 shutil” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“파일 작업을 위한 shutil”에서 뭘 배우나요?

파일 복사, 이동 및 보관하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“파일 작업을 위한 shutil” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. subprocess로 명령 실행하기
  2. 출력 캡처하기
  3. 환경과 os 모듈
  4. 파일 작업을 위한 shutil
← Python Academy(으)로 돌아가기