본문 바로가기
프로그래밍/Python

Python ] os.path 모듈

by eteo 2024. 8. 30.

 

 

파이썬의 표준 라이브러리인 os 모듈의 서브모듈인 os.path 모듈은 경로, 파일, 디렉토리에 관련된 유용한 함수들을 제공해준다.

 

 

 

os 모듈 import

 

os.path 서브모듈을 사용하기 위해 os 모듈을 import 한다.

import os

 

 

 


경로를 다룰 때 자주 사용하는 함수

 

 

 

os.path.join

 

플랫폼에 따라 올바른 경로 구분자를 사용해 여러 경로 조각을 결합해 하나의 경로를 생성한다.

path = os.path.join("folder", "subfolder", "file.txt")
print(path)
# 리눅스에서 결과: "folder/subfolder/file.txt"
# Windows에서 결과: "folder\subfolder\file.txt"

 

 

 

 

os.path.exist

 

주어진 경로가 실제로 존재하는지 여부를 확인하여 파일이나 디렉토리가 존재하면 True, 그렇지 않으면 False를 반환한다.

if os.path.exists("myfile.txt"):
    print("파일이 존재합니다.")
else:
    print("파일이 존재하지 않습니다.")

 

 

 

 

 

os.path.abspath

 

상대 경로를 절대 경로로 바꾸는데 사용된다. os.path.abspath(".")을 호출하면 현재 작업 디렉토리가 반환되며 os.getcwd()와 동일한 결과를 얻을 수 있다.

absolute_path = os.path.abspath("myfile.txt")
print(absolute_path)
current_directory = os.path.abspath(".")
print(current_directory)
current_directory = os.getcwd()
print(current_directory)

 

 

 

 

 

os.path.basename

 

주어진 경로에서 마지막 부분에 해당하는 파일명 또는 디렉토리 이름을 추출하는 데 사용된다.

filename = os.path.basename("C:\\myfolder\\myfile.txt")
print(filename)  # 결과: "myfile.txt"
foldername = os.path.basename("C:\\myfolder")
print(foldername)  # 결과: "myfolder"

 

 

 

 

os.path.dirname

 

주어진 경로에서 상위 디렉토리 경로만을 반환한다. 보통 파일명을 제외한 경로의 나머지 부분을 추출하는 데 사용된다.

directory = os.path.dirname("C:\\myfolder\\myfile.txt"")
print(directory)  # 결과: "C:\myfolder"

 

 

 

 

os.path.split

 

경로를 디렉토리 경로와 파일명으로 분리한다.

directory, filename = os.path.split("C:\\myfolder\\myfile.txt")
print(directory)  # 결과: "C:\myfolder"
print(filename)   # 결과: "myfile.txt"

 

 

 

 

 

os.path.splitext

 

파일명과 확장자를 분리한다.

filename, ext = os.path.splitext("myfile.txt")
print(filename)  # 결과: "myfile"
print(ext)       # 결과: ".txt"

 

 

 

 

os.path.isabs

 

주어진 경로가 절대 경로인지 확인한다.

is_absolute = os.path.isabs("C:\\myfolder\\myfile.txt")
print(is_absolute)  # 결과: True

 

 

 

 

os.path.isdir

 

주어진 경로가 디렉토리인지 확인한다.

is_directory = os.path.isdir("C:\\myfolder")
print(is_directory)  # 결과: True

 

 

 

 

os.path.isfile

 

주어진 경로가 파일인지 확인한다.

is_file = os.path.isfile("C:\\myfolder\\myfile.txt")
print(is_file)  # 결과: True

 

 

 

 

 

실행 중인 스크립트 파일이 위치한 경로 가져오기

 

현재 작업 디렉토리가 아니라 실행 중인 스크립트 파일이 위치한 경로를 가져오는 방법은 다음과 같다. 

1. 특수 변수 __file__ 사용 방법

2. sys.argv[0] 사용 방법

import os

# 현재 실행 중인 파이썬 스크립트의 경로를 나타내는 특수변수 __file__ 을 사용하는 방법
script_path = os.path.abspath(__file__)
script_dir = os.path.dirname(script_path)

print("스크립트가 위치한 경로:", script_dir)
import os
import sys

# sys 모듈을 사용해 첫번째 명령인자를 가져오는 방법
script_path = os.path.abspath(sys.argv[0])
script_dir = os.path.dirname(script_path)

print("스크립트가 위치한 경로:", script_dir)

 

 

 

 

 

파일 생성 및 수정 시간 가져오기

 

os.path.getctime, os.path.getmtime으로 파일 생성 시간과 수정 시간을 확인할 수 있다. 두 함수의 반환값은 UNIX time으로 1970년 1월 1일 00:00:00 이후 경과 시간을 초 단위로 float 타입으로 반환한다.

time.ctime은 UNIX time을 사람이 읽기 쉬운 문자열 형태로 변환하는 역할을 한다.

import os
import time

# 파일 생성 시간 (Windows에서는 파일 생성시간, Unix 계열에서는 파일의 권한/소유권 등 메타데이터가 마지막으로 변경된 시간)
creation_time = os.path.getctime("test.py")
print("Creation time:", time.ctime(creation_time))

# 파일 수정 시간
modification_time = os.path.getmtime("test.py")
print("Modification time:", time.ctime(modification_time))

 

 

 

 

파일 크기 가져오기

 

os.path.getsize 함수를 사용하면 파일의 크기를 구할 수 있다. 만약 디렉토리의 크기를 구하고 싶다면 해당 함수를 사용해 디렉토리 내 모든 파일의 크기를 재귀적으로 합산하는 방법을 사용해야 한다.

import os

# 파일 크기
file_size = os.path.getsize("test.py")
print("File size:", file_size, "bytes")