답변:
파이썬에서 파일에서 모듈을로드 __file__
하면 해당 경로로 설정됩니다. 그런 다음 다른 기능과 함께 사용하여 파일이있는 디렉토리를 찾을 수 있습니다.
한 번에 하나씩 예를 들면 :
A = os.path.join(os.path.dirname(__file__), '..')
# A is the parent directory of the directory where program resides.
B = os.path.dirname(os.path.realpath(__file__))
# B is the canonicalised (?) directory where the program resides.
C = os.path.abspath(os.path.dirname(__file__))
# C is the absolute path of the directory where the program resides.
여기에서 반환 된 다양한 값을 볼 수 있습니다.
import os
print(__file__)
print(os.path.join(os.path.dirname(__file__), '..'))
print(os.path.dirname(os.path.realpath(__file__)))
print(os.path.abspath(os.path.dirname(__file__)))
당신이 (예 : 다른 위치에서 실행해야합니다 ./text.py
, ~/python/text.py
어떤 차이를 만드는을 볼 수 등 등).
name '__file__' is not defined
합니다.
__file__
파일에서로드 된 경우 모듈이로드 된 파일의 경로 이름입니다. 이 방법은 __file__
당신이하지 인터프리터 스크립트로 실행할 경우에만 작동합니다 (당신이 인터프리터 가져올하지 않는 한 ...).
먼저 혼란을 해결하고 싶습니다. __file__
와일드 카드가 아닌 속성입니다. 이중 밑줄 속성 및 방법은 규칙에 따라 "특별한"것으로 간주되며 특수한 용도로 사용됩니다.
http://docs.python.org/reference/datamodel.html 은 많은 특수 메소드 및 속성을 보여줍니다 (모두는 아님).
이 경우 __file__
모듈 (모듈 객체)의 속성입니다. 파이썬에서 .py
파일은 모듈입니다. 따라서 상황에 따라 다른 것을 의미 import amodule
하는 속성이 __file__
있습니다.
문서에서 가져온 것 :
__file__
파일에서로드 된 경우 모듈이로드 된 파일의 경로 이름입니다.__file__
인터프리터에 정적으로 링크 된 C 모듈에는 이 속성이 없습니다. 공유 라이브러리에서 동적으로로드 된 확장 모듈의 경우 공유 라이브러리 파일의 경로 이름입니다.
귀하의 경우 모듈이 __file__
전역 네임 스페이스 의 자체 속성에 액세스하고 있습니다.
이것을 실제로 보려면 다음을 시도하십시오.
# file: test.py
print globals()
print __file__
그리고 다음을 실행하십시오.
python test.py
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__file__':
'test_print__file__.py', '__doc__': None, '__package__': None}
test_print__file__.py
__file__
. 정적으로 연결된 C 모듈과 같은 모든 경우에 정의되지는 않습니다. 우리는__file__
항상 사용할 수 있다고 생각할 수 없습니다.