利用Python怎么調(diào)用不同目錄間的模塊?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括魯山網(wǎng)站建設(shè)、魯山網(wǎng)站制作、魯山網(wǎng)頁制作以及魯山網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,魯山網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到魯山省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!1、__file__
功能:返回自身文件的相對路徑
#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 #打印出絕對路徑 #從cmd執(zhí)行atm.py D:\PycharmProjects\51homework>python Atm/bin/atm.py Atm/bin/atm.py #打印的是相對路徑
從上面看,為什么pycharm中執(zhí)行的結(jié)果是絕對路徑,而從cmd調(diào)用python命令時顯示的卻是相對路徑?你從pycharm的執(zhí)行結(jié)果可以看出,在pycharm執(zhí)行atm.py文件時,是從絕對路徑下去執(zhí)行的,而你從cmd下去執(zhí)行的時候,是你選擇可以在哪個路徑下執(zhí)行,而__file__表示的是相對路徑,所以在哪個路徑下,就打印哪個路徑。
2、os.path.abspath()
功能:返回自身文件的絕對路徑
#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的絕對路徑
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ù)類型是一個列表。
三、絕對路徑和相對路徑
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') '' #顯示相對路徑
四、不同目錄間進(jìn)行模塊調(diào)用
1、添加環(huán)境變量
一般情況下,絕對路徑函數(shù)和相對路徑函數(shù)是結(jié)合起來用的,特別是在不同目錄之間相互調(diào)用彼此的模塊。
比如按以上層級:atm.py如果想調(diào)用其他模塊中的代碼,必須要跟atm.py是同級的,不信請看如下代碼:
#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'這一層,其他的層級無法調(diào)用。那怎么辦吶?
步驟如下:
1.獲取Atm的絕對路徑
2.添加到環(huán)境變量中
代碼如下:
#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) #添加到環(huán)境變量中 #cmd執(zhí)行結(jié)果 D:\PycharmProjects\51homework>python Atm/bin/atm.py #執(zhí)行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的絕對路徑已經(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)容,你們掌握利用Python怎么調(diào)用不同目錄間的模塊的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。