亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python不同目錄間進(jìn)行模塊調(diào)用的實(shí)現(xiàn)方法

 更新時(shí)間:2019年01月29日 14:43:23   作者:IT技術(shù)隨筆  
這篇文章主要介紹了Python不同目錄間進(jìn)行模塊調(diào)用的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

一、背景

之前寫了軟件開發(fā)目錄規(guī)范這篇博客,相信很多人都已經(jīng)知道,我們?cè)趯懗绦驎r(shí)需要遵循一定的規(guī)范,不然,就算很簡答的邏輯程序的代碼,讀起來會(huì)很費(fèi)勁,占用了我們大量的時(shí)間,但是,我們一旦用了這樣的規(guī)范目錄,我們?cè)趺慈ビ淇斓倪M(jìn)行模塊之前的相互導(dǎo)入呢?這就不得不說我們今天討論的兩個(gè)概念:絕對(duì)路徑和相對(duì)路徑。

二、函數(shù)功能解釋

1、__file__

功能:返回自身文件的相對(duì)路徑

#atm.py中的代碼
print(__file__)
 
#pycharm的執(zhí)行結(jié)果
D:\Python\Python35\python.exe D:/PycharmProjects/51homework/Atm/bin/atm.py
D:/PycharmProjects/51homework/Atm/bin/atm.py #打印出絕對(duì)路徑
#從cmd執(zhí)行atm.py 
D:\PycharmProjects\51homework>python Atm/bin/atm.py 
Atm/bin/atm.py  #打印的是相對(duì)路徑 

從上面看,為什么pycharm中執(zhí)行的結(jié)果是絕對(duì)路徑,而從cmd調(diào)用python命令時(shí)顯示的卻是相對(duì)路徑?你從pycharm的執(zhí)行結(jié)果可以看出,在pycharm執(zhí)行atm.py文件時(shí),是從絕對(duì)路徑下去執(zhí)行的,而你從cmd下去執(zhí)行的時(shí)候,是你選擇可以在哪個(gè)路徑下執(zhí)行,而__file__表示的是相對(duì)路徑,所以在哪個(gè)路徑下,就打印哪個(gè)路徑。

2、os.path.abspath()

功能:返回自身文件的絕對(duì)路徑

#atm.py的文件代碼
import os
print(os.path.abspath(__file__))
#在cmd中的執(zhí)行結(jié)果
D:\PycharmProjects\51homework>python Atm/bin/atm.py
D:\PycharmProjects\51homework\Atm\bin\atm.py #獲取atm.py的絕對(duì)路徑 

3、os.path.dirname()

功能:返回目錄名,不需要文件名

print(os.path.dirname( os.path.abspath(__file__) ))
D:\PycharmProjects\51homework\Atm\bin #只返回目錄名,不需要文件名 

4、sys.path

功能:python環(huán)境的執(zhí)行的環(huán)境變量

import sys
print(sys.path)
#cmd執(zhí)行的結(jié)果
['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'] 

注:執(zhí)行路徑是列表的形式打印出來的,所以sys.path數(shù)據(jù)類型是一個(gè)列表。

三、絕對(duì)路徑和相對(duì)路徑

1、絕對(duì)路徑

絕對(duì)路徑:從根目錄為起點(diǎn)到你所在的目錄。

>>> 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盤的這個(gè)根目錄下來的 

2、相對(duì)路徑

相對(duì)路徑:從一個(gè)目錄為起點(diǎn)到你所在的目錄。

>>> import os

>>> os.chdir("D:\\PycharmProjects\\51homework\\Atm\\bin\\")

>>> os.listdir()

['atm.py', '__init__.py']

>>> os.path.dirname('atm.py')

''  #顯示相對(duì)路徑

四、不同目錄間進(jìn)行模塊調(diào)用

1、添加環(huán)境變量

一般情況下,絕對(duì)路徑函數(shù)和相對(duì)路徑函數(shù)是結(jié)合起來用的,特別是在不同目錄之間相互調(diào)用彼此的模塊。

比如按以上層級(jí):atm.py如果想調(diào)用其他模塊中的代碼,必須要跟atm.py是同級(jí)的,不信請(qǐng)看如下代碼:

#atm.py中的代碼

import sys

print(sys.path)

#cmd執(zhí)行的結(jié)果

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\\bin'這一層,其他的層級(jí)無法調(diào)用。那怎么辦吶?

步驟如下:

1.獲取Atm的絕對(duì)路徑
2.添加到環(huán)境變量中

代碼如下:

#atm.py中的代碼
import os,sys
BASE_DIR = os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) #Atm的絕對(duì)路徑
print(BASE_DIR)
sys.path.append(BASE_DIR) #添加到環(huán)境變量中
#cmd執(zhí)行結(jié)果
D:\PycharmProjects\51homework>python Atm/bin/atm.py  #執(zhí)行atm.py文件
D:\PycharmProjects\51homework\Atm  #打印Atm的絕對(duì)路徑
['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的絕對(duì)路徑已經(jīng)添加到環(huán)境變量中 

2、調(diào)用其他模塊

接下來就可以順利的進(jìn)行不同目錄下,模塊之間的調(diào)用了

#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  #調(diào)用core中的main模塊
main.sayhi()  #調(diào)用main模塊中sayhi函數(shù)
 
#main.py中代碼
def sayhi():
  print("hello word")
 
#cmd執(zhí)行的結(jié)果
D:\PycharmProjects\51homework>python Atm/bin/atm.py
hello word

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論