本地檔案讀寫依賴檔案路徑,本節簡單介紹下相對路徑和絕對路徑,只侷限在本地路徑,不涉及網路路徑。
絕對路徑
絕對路徑就是以根目錄為參照系的路徑,根目錄(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...