파이썬(Python) os.path 모듈. 파일 경로 조작하기
os.path 모듈을 이용하면 현재 시스템에 저장되어 있는 파일의 경로정보를 조작할 수 있으며, 해당 경로에 특정 파일이 존재하는지 등의 정보를 얻을 수 있습니다.

보통 파일의 경로(path)는 문자열로 표현하기에 경로를 조작할때에는 문자열 연산을 많이 사용하게 됩니다. 따라서 os.path 모듈에서 대부분의 함수는 문자열을 매개변수로 받거나 결과로 문자열을 반환하게 됩니다.



파이썬에서 운영체제별 경로 표현
파일의 경로상에서 디렉터리를 구분할때 Windows 환경에서는 역슬래시(\)를 사용하며 Unix/Linux에서는 슬래시(/)를 사용합니다. 파이썬에서 문자열 리터럴을 표기하는 경우 역슬래시를 사용하기 위해서는 이스케이프 처리를 위해 역슬래시를 두 번 연속 사용해야 합니다.
file_path = 'C:\\Users\\todae\\Desktop\\mydir\\testFile.txt'
cs




해당 경로에 파일이 존재하는지 확인하기 - exists(path)


만약 위의 경로에 testFile.txt 파일이 존재하는지 확인하고 싶은경우 exists(path) 함수를 사용하면 됩니다. 경로는 문자열로 지정해 주어야 하며, 반환값은 파일이 존재하는 경우 True 존재하지 않는 경우 False입니다.
import os
 
 
file_path1 = 'C:\\Users\\todae\\Desktop\\mydir\\testFile.txt'
file_path2 = 'C:\\Users\\todae\\Desktop\\mydir\\testFile2.txt'
 
 
print(os.path.exists(file_path1))  #True
print(os.path.exists(file_path2))  #False
cs




경로에서 디렉터리 경로와 파일명 부분 분리하기 - split(path)
파일 경로를 나타내는 문자열에서 파일명과 디렉터리명을 구분하여 나누고 싶은 경우 split(path)
함수를 사용합니다. 결과로 tuple을 반환합니다.
import os
 
file_path = 'C:\\Users\\todae\\Desktop\\mydir\\testFile.txt'
 
print(os.path.split(file_path))   # ('C:\\Users\\todae\\Desktop\\mydir', 'testFile.txt')
cs


 



운영체제에 독립적으로 경로 합치기 - join(path, *paths)
글의 초반에서 설명했듯이 파이썬이 실행되는 운영체제에 환경에 따라 디렉터리를 구분하는 구분자(splitter)가 달라집니다. 그러나 운영체제에 따라 경로를 만들기 위해서는 if문과 운영체제를 확인하는 불필요한 코드가 들어갈 수 있습니다.

이럴때는 join() 함수를 사용할 수 있습니다. 디렉터리와 파일명을 가변인자로 넘겨줍니다.
import os
 
joined_path = os.path.join('Users','todae''Desktop''mydir''testFile.txt')
 
print(joined_path)
cs


Windows에서 실행시 출력결과
Users\todae\Desktop\mydir\testFile.txt
cs

Linux에서 실행시 출력결과
Users/todae/Desktop/mydir/testFile.txt
cs



상대경로로 절대경로 구하기 - abspath(path)
상대경로를 절대경로를 구하고 싶은 경우 abspath(path) 함수를 사용합니다. 현재 파이썬 스크립트가 실행된 경로 . 을 절대경로로 바꾸는 경우 다음과 같이 사용합니다.
import os
 
print(os.path.abspath('.'))
cs

자신의 파이썬 코드가 실행된 위치에 따라 다르게 출력될 수 있습니다.
C:\Users\todae\PycharmProjects\myPython
cs



경로에서 파일명 또는 디렉터리 경로 구하기
경로를 표현하는 문자열에서 파일명을 구하는 경우 basename(path) 함수를 사용하며, 파일명 앞까지의 디렉터리 경로를 구하는 경우 dirname(path) 함수를 사용합니다.
import os
 
file_path = 'C:\\Users\\todae\\Desktop\\mydir\\testFile.txt'
 
dir_path = os.path.dirname(file_path)
file_name = os.path.basename(file_path)
 
print(dir_path)
print(file_name)
cs

출력 결과 
C:\Users\todae\Desktop\mydir
testFile.txt
cs



경로 문자열이 파일을 표현하는지 디렉터리를 표현하는지 구하기
경로를 표현하는 문자열이 파일을 표현하는지 여부는 isfile(path) 함수를, 디렉터리를 표현하는지 여부는 isdir(path) 함수를 사용하며, 반환값은 bool 타입으로 True, False를 리턴합니다.
import os
 
 
file_path = 'C:\\Users\\todae\\Desktop\\mydir\\testFile.txt'
dir_path = 'C:\\Users\\todae\\Desktop\\mydir\\'
 
 
print(os.path.isfile(file_path))
print(os.path.isdir(dir_path))
cs


출력 결과
True
True
cs

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!