一、背景
之前寫了軟件開發目錄規范這篇博客,相信很多人都已經知道,我們在寫程序時需要遵循一定的規范,不然,就算很簡答的邏輯程序的代碼,讀起來會很費勁,占用了我們大量的時間,但是,我們一旦用了這樣的規范目錄,我們怎么去愉快的進行模塊之前的相互導入呢?這就不得不說我們今天討論的兩個概念:絕對路徑和相對路徑。
二、函數功能解釋
1、__file__
功能:返回自身文件的相對路徑
#atm.py中的代碼print(__file__) #pycharm的執行結果D:/Python/Python35/python.exe D:/PycharmProjects/51homework/Atm/bin/atm.pyD:/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 osprint(os.path.abspath(__file__))#在cmd中的執行結果D:/PycharmProjects/51homework>python Atm/bin/atm.pyD:/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 sysprint(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數據類型是一個列表。
三、絕對路徑和相對路徑
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')'' #顯示相對路徑
新聞熱點
疑難解答