在python中獲取當前路徑使用os.getcwd()並不總是有效的,不是得到的真實絕對路徑。運行的時候有時取得的路徑是當前腳本路徑,有時卻不是,相同的代碼,在win的pycharm下運行得到的路徑,與在linux中執行python test.py后得到的路徑是不同的。
查閱了一些資料才發現,os.getcwd()是用來獲取調用python程序時所在目錄,也就是調用目錄,並非該腳本所在目錄,舉個例子:
有這樣一個腳本,e:\root\subdir\test.py,且test.py文件中有print os.getcwd()語句,
進入cmd窗口,cd e:\root\subdir\,敲擊python test.py 文件,打印結果是e:\root\subdir
如果是這樣 cd e:\root\,敲擊python test.py 文件,打印結果卻是e:\root
簡而言之也就是你在哪個窗口執行的命令,當前窗口就是哪兒。
即使在win的pycharm下,兩個模塊在相同的目錄下也會顯示不同的路徑
因為連個模塊中的代碼不同,導致輸出的路徑,一個是mainpro , 一個是mypkg.
解決辦法:
獲取代碼所在文件的絕對路徑:
current_path = os.path.abspath(__file__)
獲取以上文件所在的目錄
current_dir = os.path.dirname(os.path.abspath(__file__))
再次用以上方法可以得到上上級目錄等等
參考https://blog.csdn.net/cckavin/article/details/85392392
https://blog.csdn.net/qq_33716688/article/details/89333856
https://blog.csdn.net/lzl001/article/details/8495823