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__)
# -*- 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 "os.getcwd() = " + os.getcwd()
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
/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() ] 명령을 사용하면 된다.
반응형
'Programming > Python' 카테고리의 다른 글
카카오톡 봇 만들어보기 (with Python) (2) | 2018.10.28 |
---|---|
삼성 링크 / AllShare .mta 파일 삭제하기 (0) | 2014.08.17 |
윈도우즈 환경에서 파이썬 실행하기 (0) | 2014.08.17 |
GitPython : remote.fetch() 에러 (0) | 2014.07.06 |
Python으로 Git을 다뤄보자. (Ubuntu 14.04 LTS 64bit, GitPython 0.3.2 RC1) (2) | 2014.07.04 |