본문으로 바로가기

__file__ 이란?

해당 코드를 가지는 파이썬 파일의 이름 혹은 경로이며, 실행한 위치에서의 상대경로를 포함합니다.

import os

print(__file__)
더보기
(py36) PS C:\Users\Desktop\python\os_\ex5> ls

    디렉터리: C:\Users\Desktop\python\os_\ex5

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----     2020-06-30   오후 2:21            246 ex5.py

(py36) PS C:\Users\Desktop\python\os_\ex5> python ex5.py
ex5.py
(py36) PS C:\Users\Desktop\python\os_\ex5> cd ..
(py36) PS C:\Users\Desktop\python\os_> python ex5/ex5.py
ex5/ex5.py

 

절대경로 구하기 os.path.abspath()

절대경로를 구할 때는 abspath() 를 사용합니다.

다음과 같이 사용하면 실행 위치와 상관없이 파이썬 파일의 절대경로를 가질 수 있습니다.

import os

# print(__file__)
path = os.path.dirname(os.path.abspath(__file__))
print(path)
더보기
(py36) PS C:\Users\Desktop\python\os_\ex5> 
(py36) PS C:\Users\Desktop\python\os_\ex5> python ex5.py
C:\Users\Desktop\python\os_\ex5
(py36) PS C:\Users\Desktop\python\os_\ex5> cd ..
(py36) PS C:\Users\Desktop\python\os_> 
(py36) PS C:\Users\Desktop\python\os_> python ex5/ex5.py
C:\Users\Desktop\python\os_\ex5

 

 

다음과 같이 사용할 수 있습니다.

import os

path = os.path.dirname(os.path.abspath(__file__))
print(path)

for file in os.listdir():
    # p = os.path.join(path, file)
    p = os.path.abspath(file)
    print(p)
더보기
c:\Users\Desktop\python\os_\ex5
C:\Users\Desktop\python\os_\ex5\a
C:\Users\Desktop\python\os_\ex5\b
C:\Users\Desktop\python\os_\ex5\ex5.py

 

상대경로 구하기 os.path.relpath()

상대경로를 구할 때는 relpath() 를 사용합니다.

import os

path = os.path.dirname(os.path.abspath(__file__))
print(path)

os.chdir('test_dir')
print(os.getcwd())

p = os.path.relpath(path)
print(p)
더보기
c:\Users\Desktop\python\os_\ex5
C:\Users\Desktop\python\os_\ex5\test_dir
..