Python script 파일을 만들어서 실행을 하다보면,
script 파일이 지금 현재 어느 경로에 위치하고 있는지 알고 싶은 경우가 있다.

이럴 때 사용할 수 있는 좋은 예약어가 하나 있다.

__file__


현재 실행 중인 스크립트 파일 이름을 의미한다.
단순한 파일 이름이 아니라 실행할 때 사용한 경로를 포함한 파일 이름이다.

테스트를 위해서 [ dir.py ]라는 이름의 Python script 파일을 다음 내용으로 생성해보자.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os

if __name__ == "__main__":

        print "__file__                                                       = " + __file__
        print "os.path.dirname(__file__)                              = " + os.path.dirname(__file__)
        print "os.path.realpath(__file__)                              = " + os.path.realpath(__file__)
        print "os.path.realpath( os.path.dirname(__file__) )   = " + os.path.realpath( os.path.dirname(__file__) )
        print
        print "os.getcwd()                                                 = " + os.getcwd()
        print
        print "os.path.basename( os.path.realpath(__file__) ) = " + os.path.basename(__file__)


실행을 해보면 다음과 같다.

$ pwd
/srv/workspace/barerepo

$ python ./dir.py
__file__                                                       = ./dir.py
os.path.dirname(__file__)                              = .
os.path.realpath(__file__)                              = /srv/workspace/barerepo/dir.py
os.path.realpath( os.path.dirname(__file__) )   = /srv/workspace/barerepo

os.getcwd()                                                 = /srv/workspace/barerepo

os.path.basename( os.path.realpath(__file__) ) = dir.py


dirname 은 상대경로를 알려주고 realpath 는 절대경로를 알려준다.
 
[ __file__ ] 예약어를 통해서 현재 경로를 확인하는 것에 대해서 살펴보고 있지만,
사실 지금 현재 경로를 알고 싶을 때에는 [ os.getcwd() ] 명령이 훨씬 더 많이 사용된다.

경로에서 파일이름만 뽑아내고 싶을 때에는 [ os.path.basename() ] 명령을 사용하면 된다.

반응형

+ Recent posts