00 서론
1. Path란
- "경로"
- 컴퓨터 내에서 파일 또는 디렉토리를 나타내는 위치를 표시
- 디렉토리와 디렉토리, 또는 파일들을 경로 구분자로 연결하여 표현
- 경로 구분자: Windows에서는 역슬래시 (\) 사용, Unix 계열(Linux, MacOS 포함)에서는 슬래시 (/) 사용
-
'C:\Users\관리자\Desktop\WeZON\DCV\code_analysis\06_dcv_queue.ipynb' # Windows '/home/lsfadmin/.bashrc' # Linux
- Windows: 맨 앞에 드라이브 이름과 콜론(:) 포함
- Unix 계열: 드라이브 이름 미포함, 최상위 디렉토리는 (/) 로 시작
2. os.path와 pathlib
- Python 내장 모듈들로서 파일 경로를 다루는 기능들 제공
- os, pathlib 외에 파일 작업 관련 모듈/함수들:
- 파일 읽기/쓰기: open() 함수
- 명령 줄에서 모든 파일의 모든 라인을 읽기: fileinput 모듈
- 임시 파일 및 디렉토리 생성: tempfile 모듈
- 파일 및 디렉토리를 고수준으로 처리: shutil 모듈
1) os
import os
- 정의:
- 운영체제(Operation System)와 상호작용하여 운영체제의 종속기능 (예: 폴더/파일 다루기 등)을 사용 가능케 하는 함수들 제공
- 사용 예시
- 경로 조작: os.path 모듈 사용
2) pathlib
import pathlib
from pathlib import Path
01 os.path와 pathlib.Path의 차이
os.path |
pathlib.Path |
||||
라이브러리 | os |
pathlib |
|||
파이썬 버전 | Python 3.4 이전부터 지원 | Python 3.4 이후부터 지원 | |||
경로를 다루는 형태 | 문자열 |
Path 객체 |
|||
예시 | import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent |
|||
읽는 방향 | ← 오른쪽에서 왼쪽으로 |
→ 왼쪽에서 오른쪽으로 |
|||
예시 설명 |
- BASE_DIR 는 기본 root dir을 지정하는 코드 (보통 manage.py가 있는 위치) | ||||
- __file__: 현재 파일 - os.path.abspath: 절대 경로 취득 (즉, 현재 파일의 절대경로 취득, /User/test/프로젝트명/settings.py가 있는 디렉토리/settings.py) - os.path.dirname: settings.py가 있는 폴더 이름 찾음 (즉, 3번 디렉토리를 쌌기에 os.path.dirname이 3번 나옴) |
- __file__: 현재 파일 - Path: 구상 경로를 객체화 (즉, 현재 파일의 경로를 객체화해서 표현) - resolve: 절대경로 반환 - parent: 부모 경로로 django 프로젝트가 생성된 위치를 표현 시 사용 (2번 parent 사용했기에 2번 옮겨간 위치에 django 프로젝트가 생성됨) |
||||
대응하는 메소드 | os 모듈 | pathlib 모듈 | |||
처리 내용 |
현재 경로 취득 | os.getcwd() | pathlib.Path.cwd() | ||
절대경로 취득 | os.path.abspath() | pathlib.Path().resolve() | |||
상태 취득 | os.stat() | pathlib.Path.stat() pathlib.Path.owner() pathlib.Path.group() |
|||
import된 운영체제 종속 모듈 이름 취득 | os.name ('posix', 'nt', 'java' 중 하나) |
||||
파일명 취득 | os.path.basename() | pathlib.PurePath().name | |||
디렉토리 취득 | os.path.dirname() | pathlib.PurePath().parent | |||
파일/폴더 취득 | os.listdir() | pathlib.Path().glob('*') | |||
확장자 분리 및 취득 | os.path.splitext() | pathlib.PurePath().suffix pathlib.Path().stem |
|||
맨 앞 ~를 홈 경로에 치환 | os.path.expanduser() | pathlib.Path.expanduser() pathlib.Path.home() |
|||
경로 존재 확인 | os.path.exists() | pathlib.Path.exists() | |||
디렉토리 확인 | os.path.isdir() | pathlib.Path.is_dir() | |||
파일 확인 | os.path.isfile() | pathlib.Path.is_file() | |||
심볼릭 링크 확인 | os.path.islink() | pathlib.Path.is_symlink() | |||
절대경로 확인 | os.path.isabs() | pathlib.PurePath.is_absolute() | |||
상위 폴더 (부모 디렉토리) 취득 | os.path.dirname() os.pardir |
pathlib.Path().parent | |||
경로 연결 | os.path.join() | pathlib.Path().joinpath() | |||
폴더 만들기 | os.makedirs() | pathlib.Path().mkdir() |
참조
- https://compmath.korea.ac.kr/python/Files.html
- https://docs.python.org/3/library/pathlib.html
- https://docs.python.org/3/library/os.html
- https://velog.io/@wlgns410/os.path%EC%99%80-Pathlib-%EC%B0%A8%EC%9D%B4
- https://docs.python.org/3/library/os.path.html#module-os.path
- https://zephyrus1111.tistory.com/456
- https://goodthings4me.tistory.com/800
'Python > 기본문법' 카테고리의 다른 글
re (정규표현식 작업 모듈) (0) | 2024.06.13 |
---|---|
파이썬 Type Hint (타입 정보 명시적 표시) (0) | 2024.05.08 |
Generator (제너레이터) (0) | 2024.05.03 |
dict.pop() 메소드 (0) | 2024.04.17 |
Regular Expression (정규표현식) (0) | 2024.03.26 |