파일과 디렉터리 접근

파일과 디렉터리 접근 (File and Directory Access)

이 장에서 설명하는 모듈들은 디스크 파일과 디렉터리를 다룹니다. 예를 들어 파일의 속성을 읽는 모듈, 경로를 이식 가능한 방식으로 조작하는 모듈, 임시 파일을 만드는 모듈이 있습니다. 이 장의 전체 모듈 목록은 다음과 같습니다.

출처: Python documentation

본문

  • pathlib — 객체 지향 파일 시스템 경로. 기본 사용, 예외, 순수 경로(Pure paths), 구체적 경로(Concrete paths), URI 파싱·생성, 경로 확장·해석, 파일 타입·상태 질의, 파일 읽기·쓰기, 디렉터리 읽기, 파일·디렉터리 생성, 복사·이동·삭제, 권한·소유권, 패턴 언어, glob 모듈과의 비교, os/os.path 모듈과의 비교를 다룹니다.
  • os.path — 공통 경로 이름 조작.
  • statstat() 결과 해석.
  • filecmp — 파일과 디렉터리 비교. dircmp 클래스를 다룹니다.
  • tempfile — 임시 파일과 디렉터리 생성. 예제, 폐지된 함수와 변수를 다룹니다.
  • glob — 유닉스 스타일 경로 이름 패턴 확장. 예제를 다룹니다.
  • fnmatch — 유닉스 파일 이름 패턴 매칭.
  • linecache — 텍스트 줄에 대한 임의 접근.
  • shutil — 고수준 파일 연산. 디렉터리·파일 연산, 플랫폼별 효율적 복사, copytree 예제, rmtree 예제, 아카이브 연산, 출력 터미널 크기 질의를 다룹니다.

이 장의 모듈들은 파일과 디렉터리 작업에 필요한 기본 기능을 제공합니다. pathlib는 경로를 객체로 다루어 이식 가능하고 직관적인 경로 조작을 가능하게 하고, os.path는 전통적인 경로 문자열 함수를 제공합니다. shutil은 파일 복사, 이동, 아카이브 생성 등 고수준 연산을, tempfile은 안전한 임시 파일·디렉터리 생성을 담당합니다. globfnmatch는 파일 이름 패턴 매칭을, linecache는 텍스트 파일의 줄에 임의 접근합니다.

관련 모듈로는 Python 파일 객체보다 더 낮은 수준에서 파일을 다루는 함수를 제공하는 os 모듈, 추상 클래스와 파일 I/O 같은 구체 클래스를 포함하는 내장 I/O 라이브러리 io, 파일을 읽고 쓰는 표준 방법인 내장 함수 open()이 있습니다.

tempfile은 안전하게 생성되고 사용 후 자동 정리를 지원하는 임시 파일·디렉터리를 만듭니다. TemporaryFile(), NamedTemporaryFile(), TemporaryDirectory() 같은 함수와 mkstemp()/mkdtemp() 같은 저수준 함수를 제공하며, 임시 위치가 없으면 시스템 기본 임시 디렉터리를 사용합니다.

pathlib.Path는 경로를 문자열이 아닌 객체로 다루어 슬래시 연산자로 경로를 결합하고(Path('a') / 'b'), 순수 경로와 구체적 경로를 구분합니다. Path.read_text(), Path.write_bytes(), Path.iterdir(), Path.glob(), Path.rename(), Path.unlink() 등으로 파일·디렉터리 연산을 직관적으로 수행합니다.

glob.glob('**/*.py', recursive=True)는 패턴에 일치하는 경로를 반환하고, shutil.copy2()/shutil.move()/shutil.copytree()/shutil.rmtree()/shutil.make_archive()는 파일·디렉터리의 복사·이동·삭제·아카이브 생성을 처리하며, 플랫폼별로 효율적인 복사 연산을 선택합니다.

stat 모듈은 os.stat() 결과를 해석해 파일 타입과 권한을 판별하고, linecachelinecache.getline(filename, lineno)으로 텍스트 파일의 특정 줄에 임의 접근합니다. 이 모듈들을 조합하면 파이썬에서 파일 시스템을 다루는 대부분의 작업을 처리할 수 있습니다.

더 알아보기 (Learn more)