Python 서로 다른 디 렉 터 리 간 모듈 호출 실현 방법
이전에 소프트웨어 개발 디 렉 터 리 를 써 서 이 블 로 그 를 규범화 시 켰 습 니 다.많은 사람들 이 이미 알 고 있 을 것 입 니 다.우 리 는 프로그램 을 쓸 때 일정한 규범 을 지 켜 야 합 니 다.그렇지 않 으 면 간단 한 논리 프로그램의 코드 라 도 읽 기 가 힘 들 고 많은 시간 을 차지 할 것 입 니 다.그러나 우리 가 이런 규범 디 렉 터 리 를 사용 하면우 리 는 어떻게 모듈 이전의 상호 도입 을 즐겁게 진행 합 니까?이것 은 우리 가 오늘 토론 한 두 가지 개념 인 절대 경로 와 상대 경로 라 고 말 할 수 밖 에 없다.
함수 기능 설명
1、__file__
기능:파일 의 상대 경 로 를 되 돌려 줍 니 다.
#atm.py
print(__file__)
#pycharm
D:\Python\Python35\python.exe D:/PycharmProjects/51homework/Atm/bin/atm.py
D:/PycharmProjects/51homework/Atm/bin/atm.py #
# cmd atm.py
D:\PycharmProjects\51homework>python Atm/bin/atm.py
Atm/bin/atm.py #
위 에서 볼 때,왜 pycharm 에서 실 행 된 결 과 는 절대 경로 이 고,cmd 에서 python 명령 을 호출 할 때 상대 적 인 경 로 를 표시 합 니까?pycharm 의 실행 결 과 를 통 해 알 수 있 듯 이 pycharm 에서 atm.py 파일 을 실행 할 때 절대적 인 경로 에서 실 행 됩 니 다.cmd 에서 실 행 될 때 어떤 경로 에서 실 행 될 수 있 는 지 선택 하 십시오.file__상대 경 로 를 표시 하기 때문에 어느 경로 에서 어느 경 로 를 인쇄 합 니까?2、os.path.abspath()
기능:자신의 파일 의 절대 경 로 를 되 돌려 줍 니 다.
#atm.py
import os
print(os.path.abspath(__file__))
# cmd
D:\PycharmProjects\51homework>python Atm/bin/atm.py
D:\PycharmProjects\51homework\Atm\bin\atm.py # atm.py
3、os.path.dirname()기능:디 렉 터 리 이름 을 되 돌려 줍 니 다.파일 이름 이 필요 없습니다.
print(os.path.dirname( os.path.abspath(__file__) ))
D:\PycharmProjects\51homework\Atm\bin # ,
4、sys.path기능:python 환경의 실행 환경 변수
import sys
print(sys.path)
#cmd
['D:\\PycharmProjects\\51homework\\Atm\\bin', 'D:\\Python\\Python35\\python35.zip',
'D:\\Python\\Python35\\DLLs', 'D:\\Python\\Python35\\lib', 'D:\\Python\\Python35',
'D:\\Python\\Python35\\lib\\site-packages']
주:실행 경 로 는 목록 형식 으로 인쇄 되 어 있 기 때문에 sys.path 데이터 형식 은 목록 입 니 다.3.절대 경로 와 상대 경로
1.절대 경로
절대 경로:루트 디 렉 터 리 를 시작 으로 당신 이 있 는 디 렉 터 리 로 갑 니 다.
>>> import os
>>> os.chdir("D:\\PycharmProjects\\51homework\\Atm\\bin\\")
>>> os.listdir()
['atm.py', '__init__.py']
>>> os.path.abspath('atm.py')
'D:\\PycharmProjects\\51homework\\Atm\\bin\\atm.py' # D
2.상대 경로상대 경로:디 렉 터 리 를 시작 으로 디 렉 터 리 로 이동 합 니 다.
>>> import os
>>> os.chdir("D:\\PycharmProjects\\51homework\\Atm\\bin\\")
>>> os.listdir()
['atm.py', '__init__.py']
>>> os.path.dirname('atm.py')
'' #
4.서로 다른 디 렉 터 리 간 에 모듈 호출1.환경 변수 추가
일반적인 상황 에서 절대 경로 함수 와 상대 경로 함 수 는 결합 하여 사용 하 는데 특히 서로 다른 디 렉 터 리 간 에 서로 다른 모듈 을 호출 합 니 다.
예 를 들 어 상기 등급:atm.py 가 다른 모듈 의 코드 를 호출 하려 면 atm.py 와 같은 등급 이 어야 합 니 다.믿 지 않 으 면 다음 코드 를 보십시오.
#atm.py
import sys
print(sys.path)
#cmd
D:\PycharmProjects\51homework>python Atm/bin/atm.py
['D:\\PycharmProjects\\51homework\\Atm\\bin', 'D:\\Python\\Python35\\python35.zip',
'D:\\Python\\Python35\\DLLs', 'D:\\Python\\Python35\\lib', 'D:\\Python\\Python35',
'D:\\Python\\Python35\\lib\\site-packages']
'D:\\\\PycharmProjects\\\51homework\\\\Atm\\\\빈'층 만 있 으 면 다른 등급 은 호출 할 수 없습니다.그럼 어 떡 하지?절 차 는 다음 과 같다.
1.Atm 의 절대 경로 가 져 오기
2.환경 변수 에 추가
코드 는 다음 과 같 습 니 다:
#atm.py
import os,sys
BASE_DIR = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) #Atm
print(BASE_DIR)
sys.path.append(BASE_DIR) #
#cmd
D:\PycharmProjects\51homework>python Atm/bin/atm.py # atm.py
D:\PycharmProjects\51homework\Atm # Atm
['D:\\PycharmProjects\\51homework\\Atm\\bin', 'D:\\Python\\Python35\\python35.zip',
'D:\\Python\\Python35\\DLLs', 'D:\\Python\\Python35\\lib', 'D:\\Python\\Python35',
'D:\\Python\\Python35\\lib\\site-packages',
'D:\\PycharmProjects\\51homework\\Atm'] #Atm
2.다른 모듈 호출다음은 서로 다른 디 렉 터 리 에서 모듈 간 호출 을 순조롭게 진행 할 수 있 습 니 다.
#atm.py
import os,sys
BASE_DIR = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) )
sys.path.append(BASE_DIR)
from core import main # core main
main.sayhi() # main sayhi
#main.py
def sayhi():
print("hello word")
#cmd
D:\PycharmProjects\51homework>python Atm/bin/atm.py
hello word
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.