본문 바로가기
Python/기본문법

os.path vs pathlib.Path (파일 경로 다루기)

by yororing 2024. 3. 27.

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()

참조

  1. https://compmath.korea.ac.kr/python/Files.html
  2. https://docs.python.org/3/library/pathlib.html
  3. https://docs.python.org/3/library/os.html
  4. https://velog.io/@wlgns410/os.path%EC%99%80-Pathlib-%EC%B0%A8%EC%9D%B4
  5. https://docs.python.org/3/library/os.path.html#module-os.path
  6. https://zephyrus1111.tistory.com/456
  7. 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