需要讀寫文件時,如果直接寫絕對路徑,項目移植至其他平台時,文件就會因為路徑錯誤,讀寫或者導入不了,這時,我們就需要使用相對路徑的寫法,使項目的可移植性更好。
相對路徑的思路是:
① 項目內的文件路徑相對項目的根目錄是不變的
② 根目錄相對平台根目錄是變化的
所以,我們只需要找到項目根目錄的路徑,並且與文件相對項目根目錄的路徑拼接一起就可以了
示例如上圖所示,interface_test為項目名稱,配置的文件是DirTest_Path.py,所以先根據DirTest_Path.py文件先找到interface_test項目根路徑:
代碼如下:
import os
#os.path.dirname(__file__) 表示當前文件父目錄的路徑,即如上圖時,獲取的路徑是:"E:\python_work\test\interface_test\Utils\Dir_operate"
#所以獲取項目根目錄的方法是:
basepath=os.path.dirname(os.path.dirname(os.path.dirname(__file__) )) #多少層父目錄,包裹多少層 os.path.dirname()
#獲取結果: basepath="E:\python_work\test\interface_test"
所以使用相對路徑獲取test_data.xlsx,可以如下拼接:
dir_path=basepath.replace("/","\")+"\\Utils\\Dir_operate\\test_data.xlsx" #windows和linux系統文件的路徑斜杠不一樣,所以可以根據需要替換斜杠
完整代碼:
import os
basepath=os.path.dirname(os.path.dirname(os.path.dirname(__file__) ))
dir_path=basepath.replace("/","\")+"\\Utils\\Dir_operate\\test_data.xlsx" #windows平台寫法
#dir_path=basepath.replace("\","/")+"//Utils//Dir_operate//test_data.xlsx" #linux平台寫法