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
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기