이것은 초보자 질문처럼 보이지만 그렇지 않습니다. 일부 공통 접근 방식은 모든 경우에 작동하지 않습니다.
sys.argv [0]
이것은을 사용하는 것을 의미 path = os.path.abspath(os.path.dirname(sys.argv[0]))
하지만 다른 디렉토리의 다른 Python 스크립트에서 실행하는 경우 작동하지 않으며 실제로 발생할 수 있습니다.
__파일__
이것은을 사용하는 것을 의미 path = os.path.abspath(os.path.dirname(__file__))
하지만 이것이 작동하지 않는다는 것을 알았습니다.
py2exe
이없는__file__
속성을하지만,이 해결 방법은- 속성
execute()
이없는 IDLE에서 실행할 때__file__
- 내가 얻는 OS X 10.6
NameError: global name '__file__' is not defined
불완전한 답변이 포함 된 관련 질문 :
- Python-실행중인 파일 경로 찾기
- 현재 파일의 경로는 프로그램 실행 방법에 따라 다릅니다.
- 파이썬에서 실행중인 스크립트의 경로를 아는 방법?
- 디렉토리를 Python 스크립트의 디렉토리로 변경
위의 모든 유스 케이스에서 작동 하는 일반적인 솔루션을 찾고 있습니다.
최신 정보
테스트 케이스의 결과는 다음과 같습니다.
파이썬 a.py의 출력 (Windows)
a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz
b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
a.py
#! /usr/bin/env python
import os, sys
print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print "a.py: os.getcwd()=", os.getcwd()
print
execfile("subdir/b.py")
하위 디렉토리 /b.py
#! /usr/bin/env python
import os, sys
print "b.py: sys.argv[0]=", sys.argv[0]
print "b.py: __file__=", __file__
print "b.py: os.getcwd()=", os.getcwd()
print
나무
C:.
| a.py
\---subdir
b.py
NameError: global name '__file__' is not defined
사용하여 파일을 이이 IDLE 내부 없습니다.__file__
모듈 내부에만 정의되어 있다고 생각하십시오 .