pathlib — 객체 지향 파일 시스템 경로
pathlib — 객체 지향 파일 시스템 경로
소스 코드: Lib/pathlib.py
이 모듈은 파일 시스템 경로를 나타내기 위한 클래스를 제공해요. 그 의미(semantics)는 운영 체제에 맞게 조정되죠. 경로 클래스는 순수(pure) 계산 연산과, 그 클래스에 속한 것 중에 기본 경로 클래스가 I/O 연산을 제공하는지에 따라 다양한 것들로 나뉘어요.
파일 시스템 경로(그의 질문 있는 경우)에 접근하면 올바른 경로 클래스가 자동으로 생성돼요.
출처: Python 표준 라이브러리
본문
기본 사용법 (Basic use)
Path.iterdir()로 디렉터리 내용을 나열하고, Path.glob()에 파싱된 경로 문자열을 전달해 일치하는 파일을 얻을 수 있어요:
>>> from pathlib import Path
>>> p = Path('.')
>>> [x for x in p.iterdir() if x.is_dir()]
[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'), PosixPath('__pycache__')]
>>> list(p.glob('**/*.py'))
[PosixPath('test_patlib.py'), PosixPath('setup.py'), PosixPath('pathlib.py')]
클래스에는 몇 가지 기본건축(constructor) 형식이 있어요. Path.cwd(), Path.home() 그리고 Path('...')와 같이 표현할 수 있어요.
경로가 팬시하고 기본 연산 (Path properties and methods)
여기에는 많은 멤버 함수와 기본 경로(제목 그대로)를 수행하는 유용한 특수 메서드가 있어요. (주요 내용)
Path.parts
경로의 개별 부분들의 튜플.
Path.parent
경로의 논리적 부모.
Path.parents
경로를 순차적으로 자르는 항목으로 접근할 수 있는 시퀀스.
Path.name
마지막 경로 구성 요소를 나타내는 문자열.
Path.suffix
마지막 구성 요소의 확장자 또는 None.
Path.suffixes
경로의 확장자 목록.
Path.stem
마지막 경로 구성 요소에서 확장자를 뺀 것.
Path.anchor
경로가 시작되는 루트 또는 드라이브.
Path.drive
경로가 시작되는 드라이브 문자 또는 이름.
Path.root
경로의 루트.
Path.is_absolute()
경로가 절대 경로인지 판별.
Path.absolute()
절대 경로(Path.cwd()가 붙은 상대 경로)를 반환.
Path.resolve(strict=False)
시볼릭 링크를 해석해 절대 경로를 반환.
Path.cwd()
현재 작업 디렉터리를 나타내는 새 경로 객체를 반환.
Path.home()
사용자의 홈 디렉터리를 나타내는 새 경로 객체를 반환.
Path.expanduser()
~가 포함된 경로를 사용자 홈 디렉터리로 확장.
Path.stat()
경로에 대한 정보를 반환.
Path.lstat()
Path.stat()와 같지만, 심볼릭 링크 자체에 대한 정보를 반환.
Path.exists()
경로가 존재하는지 판별.
Path.is_dir() / Path.is_file() / Path.is_symlink() / Path.is_socket() / Path.is_fifo() / Path.is_block_device() / Path.is_char_device()
각 파일 유형인지 판별하는 메서드들.
Path.owner() / Path.group()
파일의 소유자 / 그룹 이름.
Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)
open()과 유사하게 경로를 연다.
Path.read_text(encoding=None, errors=None) / Path.write_text(data, encoding=None, errors=None)
텍스트를 읽거나 쓴다.
Path.read_bytes() / Path.write_bytes(data)
바이트를 읽거나 쓴다.
Path.iterdir()
디렉터리 항목을 나타내는 경로 객체들을 산출하며, 항목 순서는 임의.
Path.glob(pattern)
주어진 패턴과 일치하는 이 경로를 나타내는 모든 파일을 산출.
Path.rglob(pattern)
전적 재귀적 glob을 수행(디렉터리 내부의 모든 하위 디렉터리까지).
Path.mkdir(mode=0o777, parents=False, exist_ok=False)
주어진 경로에 디렉터리를 생성.
Path.rename(target)
파일 또는 디렉터리를 주어진 경로에 이름을 바꾼다.
Path.replace(target)
파일 또는 디렉터리를 바꾼다.
Path.unlink(missing_ok=False)
경로가 가리키는 파일을 제거.
Path.rmdir()
디렉터리(비어 있어야 함)를 제거.
Path.touch(mode=0o666, exist_ok=True)
경로를 만들거나 파일의 마지막 접근 시간과 수정 시간을 갱신.
Path.symlink_to(target, target_is_directory=False)
이 경로를 가리키는 심볼릭 링크를 만든다.
Path.hardlink_to(target)
이 경로를 가리키는 하드 링크를 만든다.
Path.chmod(mode)
파일 모드와 접근 플래그를 변경.
Path.lchmod(mode)
Path.chmod()와 같지만, 심볼릭 링크 자체를 대상으로 함.
Path.absolute(), Path.cwd(), Path.home() 등
경로 객체를 만들고 조작하는 편리한 메서드들.
순수 경로 (Pure paths)
순수 경로(pure paths)는 실제 파일 시스템에 접근하지 않는 순수 계산 연산을 제공해요. 경로 조작, 문자열 표현, 비교 등을 수행해요. 세 가지 순수 경로 클래스가 있어요:
PurePath(*pathsegments)— 파일 시스템에 접근하지 않는 순수 경로.PurePosixPath(*pathsegments)—PurePath의 하위 클래스로, POSIX 스타일 경로.PureWindowsPath(*pathsegments)—PurePath의 하위 클래스로, Windows 스타일 경로.
순수 경로 연산 (Pure paths operations)
path == other,path != other— 경로가 같은지 비교(순수 계산).path.absolute(),path.as_posix(),path.as_uri()— 표현 변환.path.drive,path.root,path.anchor,path.parent,path.parents,path.parts,path.name,path.suffix,path.suffixes,path.stem— 경로 구성 요소 접근.path / other— 경로 결합.path.match(pattern),path.glob(pattern),path.rglob(pattern)— 패턴 일치.path.relative_to(other),path.with_name(name),path.with_suffix(suffix),path.with_stem(stem)— 경로 변환.path.is_absolute(),path.joinpath(...),path.resolve()— 경로 조작.
경로 클래스 (Concrete paths)
순수 경로 클래스는 절대 경로의 I/O 작업을 수행할 수 있는 구체 경로(concrete paths) 클래스에 상속돼요.
Path(*pathsegments)— 시스템의 경로 클래스를 나타내는 일반적인 클래스. POSIX 시스템에서는PosixPath, Windows에서는WindowsPath.PosixPath(*pathsegments)—Path와PurePosixPath의 하위 클래스. 이 클래스는 Windows에서 사용할 수 없어요.WindowsPath(*pathsegments)—Path와PureWindowsPath의 하위 클래스. 이 클래스는 POSIX 시스템에서 사용할 수 없어요.
운영 체제 구별 (Operating system interface)
os.path 모듈은 항상 경로의 운영 체제에 맞게 조정되지만 대부분의 경로 조작을 수행하면서 경로와 관련된 작업을 위해 일반적으로 다음과 같이 경로를 os.fspath()로 변환하거나 os.PathLike를 사용해 표현할 수 있어요.
더 알아보기
-
os.path— 경로 조작. -
os— 운영 체제 인터페이스. -
fnmatch— 파일 이름 패턴 일치.