c 獲取當前路徑 P02絕對路徑和相對路徑

2021-10-17 08:03:35 字數 1160 閱讀 3505

本地檔案讀寫依賴檔案路徑,本節簡單介紹下相對路徑和絕對路徑,只侷限在本地路徑,不涉及網路路徑。

絕對路徑

絕對路徑就是以根目錄為參照系的路徑,根目錄(windows下是碟符)是固定的,所以每個檔案只有乙個絕對路徑。

windows下資料夾的位址列展示的就是當前資料夾的絕對路徑,或者開啟命令列工具(在位址列輸入cmd),將檔案拖進去,命令列中會直接顯示檔案的絕對路徑。

mac同第二種方法,將檔案拖入終端即可展示檔案的絕對路徑。

絕對路徑的優點是很容易獲得,且只要檔案不移動,路徑就不會改變。

它的問題在於:

資料夾巢狀層數多的時候,很容易變得非常長

檔案位置變化時,其絕對路徑也將相應變化。直接問題就是**從乙個電腦挪到另乙個電腦時,絕對路徑的變化可能導致資料訪問失敗。

相對路徑

相對路徑是以當前檔案所在目錄作為參照系。

舉個例子:

a、c、e、data3.csv是層層巢狀關係。

預設情況下jupyter notebook的當前檔案目錄就是指當前**指令碼所在的資料夾。上述例子中的notebook.ipynb執行時當前檔案目錄實際就是a資料夾。

a資料夾下的檔案c、d、data2.csv都是notebook.ipynb的同級檔案,在notebook.ipynb中可以直接通過檔名訪問到。要訪問data2.csv,直接使用相對路徑"data2.csv"。

"../"表示向上一層目錄,比如notebook.ipynb要訪問data1.csv,相對路徑就是"../data1.csv"。如果還要再往上一層,就繼續在路徑前面加乙個"../"。

當前路徑向下一層則使用"/",比如notebook.ipynb要訪問data3.csv,相對路徑先找到c也就是"c",再找到e,即"c/e",最後到"c/e/data1.csv"。注意以"/"開頭時在linux和mac表示根目錄,就是絕對路徑了。

相對路徑的優勢在於如果把**和資料放在乙個檔案包裡,無論這個檔案包整體如何移動,**和資料之間的相對路徑都是不變的,當你打包傳給別人也能正常執行。

補充一點,python指令碼可以直接改變當前檔案目錄,而不再是預設的指令碼所在資料夾,新手不建議使用。

獲取當前工作路徑(絕對路徑)

獲取當前工作目錄是使用函式 getcwd。cwd指的是 current working directory 這樣就好記憶了。函式說明 函式原型 char getcwd char buffer,int len 引數 buffer是指將當前工作目錄的絕對路徑copy到buffer所指的記憶體空間,len...

jeecms獲取絕對路徑

在jeecms後台管理做乙個附件上傳到伺服器上,然後讀取改上傳檔案,半天獲取不到路徑,後來發現有定義好的絕對路徑獲取方法 最好將檔案上傳到u資料夾底下 string path u cms www 201807 26111223imd7.xls file file new file realpathr...

檔案絕對路徑獲取

yourclass.class.getclassloader getresource threadpoolconfig.xml getpath 通過上述方法獲取到的一般是指定檔案的絕對路徑 並且該檔案必須存放在src目錄下 存在的問題 如果絕對路徑中存在空格,getpath取到的值是經過urlenc...