python獲取當前文件和目錄路徑的方法詳解
例子的目錄結(jié)構(gòu)如下:
當前目錄為pythontest,目錄下有兩個文件夾1,2和兩個文件test.py,test1.ipynb,文件夾1下面有一個test1.txt,文件夾2下面的test2.txt是指向文件夾1下test1.txt的軟鏈接。 后面程序是寫在test1.py文件中的
1、獲取當前文件路徑
- 通過python內(nèi)置關(guān)鍵字
__file__
獲取
import sys import os if __name__ == "__main__": print("__file__ :", __file__) print(os.path.abspath(__file__)) print(os.path.realpath(__file__))
進入pythontest目錄下,終端運行命令python test1.py,輸出結(jié)果:
- 通過執(zhí)行程序的命令第一個參數(shù)
sys.argv[0]
獲取
import sys import os if __name__ == "__main__": print("第一個參數(shù):", sys.argv[0]) print(os.path.abspath(sys.argv[0])) print(os.path.realpath(sys.argv[0]))
進入pythontest目錄下,終端運行命令python test1.py,輸出結(jié)果:
2、獲取當前文件所在目錄
可通過如下幾種方式獲?。?/p>
import sys import os if __name__ == "__main__": print(os.path.dirname(__file__)) print(os.getcwd()) print(os.path.abspath('.')) print(os.path.abspath(os.curdir))
進入pythontest目錄下,終端運行命令python test1.py,輸出結(jié)果:
3、os.path.abspath和os.path.realpath有什么區(qū)別?
對于普通文件,兩者沒什么區(qū)別,都是返回當前文件的絕對路徑,如上面的test1.py;但是若文件是軟連接或者快捷方式時,則os.path.realpath
返回真實文件的路徑,如下面的例子,文件夾2下面的test2.txt是指向文件夾1下test1.txt的軟鏈接,兩個函數(shù)則返回不同的路徑。
import sys import os if __name__ == "__main__": print(os.path.abspath("/home/jovyan/project/pythontest/2/test2.txt")) print(os.path.realpath("/home/jovyan/project/pythontest/2/test2.txt"))
進入pythontest目錄下,終端運行命令python test1.py,輸出結(jié)果:
4、使用os.path.abspath和os.path.realpath需注意
使用這兩個函數(shù)時需注意路徑需要完整,不然會返回一個錯誤的’絕對路徑’,如下,遍歷當前目錄下所有文件:
import sys import os if __name__ == "__main__": for i in os.listdir(os.path.dirname(__file__)): print("1級目錄:", i) if os.path.isdir(os.path.join(os.path.dirname(__file__), i)): for j in os.listdir(os.path.join(os.path.dirname(__file__), i)): print("2級目錄:", j) print(os.path.abspath(j)) # 這里j不是一個完整路徑,只是一個文件名,結(jié)果會返回一個錯誤的'絕對路徑' print(os.path.realpath(j)) print(os.path.abspath(os.path.join(os.path.dirname(__file__), i, j))) print(os.path.realpath(os.path.join(os.path.dirname(__file__), i, j)))
進入pythontest目錄下,終端運行命令python test1.py,輸出結(jié)果:
5、關(guān)于sys.path
sys.path
返回一個list,python中對list的操作均可以對sys.path
操作,常見有insert, append這些。
import sys import os if __name__ == "__main__": print("==> before:") print(sys.path) sys.path.insert(0, os.path.dirname(__file__)) #將當前文件目錄插入在path搜索路徑的第一個位置 sys.path.append(os.path.dirname(__file__)) #將當前文件目錄添加在path搜索路徑的最后 print("==> after:") print(sys.path)
進入pythontest目錄下,終端運行命令python test1.py,輸出結(jié)果:
總結(jié)
到此這篇關(guān)于python獲取當前文件和目錄路徑的文章就介紹到這了,更多相關(guān)python獲取當前文件和目錄路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python matplotlib學(xué)習(xí)筆記之坐標軸范圍
這篇文章主要介紹了Python matplotlib學(xué)習(xí)筆記之坐標軸范圍,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06python如何將aac轉(zhuǎn)為mp3,保持原有目錄結(jié)構(gòu)
使用Python腳本實現(xiàn)AAC格式轉(zhuǎn)MP3格式的方法介紹,需要用戶輸入AAC文件所在目錄路徑和MP3輸出目錄路徑,通過調(diào)用FFmpeg工具實現(xiàn)格式轉(zhuǎn)換,該腳本簡單易懂,適合需要批量處理音頻文件的用戶,使用前需確保已安裝FFmpeg環(huán)境2024-11-11淺談python的輸入輸出,注釋,基本數(shù)據(jù)類型
這篇文章主要介紹了python的輸入輸出,注釋,基本數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python中的異常處理:try?except?Exception?as?e解決辦法
這篇文章主要介紹了Python中的異常處理機制,包括try、except、finally語句的基本用法和高級用法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-04-04pycharm自定義TODO類注釋以及高亮顏色的設(shè)置方法
這篇文章主要介紹了pycharm自定義TODO類注釋以及高亮顏色的設(shè)置方法,文中通過圖文結(jié)合的方式給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2024-03-03