用os.path.expanduser 模塊獲取主目錄 為了獲得用戶的主目錄,我們可以使用Python中的os.path.expanduser 。我們必須在os.path.expanduser() 函數裡面傳遞一個字元串字元~ ,它將返回當前登錄用戶的主目錄路徑。 它使用內置的密碼資料庫或pwd 模 ...
用os.path.expanduser 模塊獲取主目錄
為了獲得用戶的主目錄,我們可以使用Python中的os.path.expanduser 。我們必須在os.path.expanduser() 函數裡面傳遞一個字元串字元~ ,它將返回當前登錄用戶的主目錄路徑。
它使用內置的密碼資料庫或pwd 模塊來搜索主目錄的路徑,pwd 模塊提供用戶的賬戶詳細信息,如登錄名和密碼。這個模塊可以在所有平臺上工作,比如Windows和Linux。
例如,讓我們使用os.path.expanduser 模塊獲得主目錄。請看下麵的代碼。
from os.path import expanduser
home_directory = expanduser("~")
print(home_directory)
輸出:
C:Usersammar
上面的代碼是在Windows上測試的,根據用戶和平臺的不同,輸出可能會有變化。如果我們想找到另一個目前沒有登錄的用戶的主目錄的路徑,我們可以在上面的代碼中的~ 字元後加上該用戶的名字。
我們還可以使用os.path.join() 函數連接兩個路徑,比如將主目錄路徑與另一個路徑連接起來。我們可以在os.path.join() 函數中傳遞我們想要連接的路徑。
例如,讓我們使用os.path.join() 函數將上述路徑與另一個路徑連接起來。請看下麵的代碼。
from os.path import expanduser, join
home_directory = expanduser("~")
new_directory = join(home_directory, 'newPathName')
print(home_directory)
print(new_directory)
輸出:
C:Usersammar
C:UsersammarnewPathName
在上面的代碼中,我們將主目錄路徑與另一個路徑連接起來。我們也可以將多個路徑連接在一起,如2個或更多。
我們不能在join() ,因為反斜杠與某些字元結合在一起,將不能輸出正確的結果,所以我們不能在 函數裡面添加反斜杠這樣的特殊字元。例如,如果我們把上面的路徑改為newPathNametpath2 ,其結果將包含一個製表空格,因為t 在字元串中被用作製表空格。
我們建議在join() 函數中單獨添加每個路徑。例如,如果我們想把另一個路徑與上面的路徑連接起來,我們必須把它作為第三個參數傳遞,join() 函數會把它放在新路徑的末尾,反斜杠會自動添加。
見下麵的示例代碼。
join(path1,path2,path3,....)
在代碼中使用join() 和expanduser() 函數之前,請確保導入這些函數。查看os.path.expanduser 庫以瞭解更多細節。
用pathlib 庫獲取主目錄
我們也可以使用pathlib 庫,用它的home() 函數來獲得主目錄的路徑。例如,讓我們使用pathlib 庫來查找主目錄。
請看下麵的代碼。
from pathlib import Path
home_directory = str(Path.home())
print(home_directory)
輸出:
C:Usersammar
在上面的代碼中,我們使用str 函數將home() 函數的輸出轉換成一個字元串。這將在所有的平臺上工作,例如,Windows和Linux;但是,輸出可能會根據用戶和平臺的不同而改變。
我們還可以使用pathlib 庫的PureWindowsPath().joinPath() 函數連接兩個或多個路徑。起始路徑將在PureWindowsPath() 函數中傳遞,新的路徑將在joinPath() 函數中加入,從而得到一個組合路徑。
例如,讓我們使用PureWindowsPath().joinPath() 函數將上面的路徑與兩個路徑結合起來。請看下麵的代碼。
from pathlib import Path,PureWindowsPath
home_directory = Path.home()
new_directory = PureWindowsPath(home_directory).joinpath('newPathName','path2')
print(home_directory)
print(new_directory)
#Python小白學習交流群:711312441
輸出:
C:Usersammar
C:UsersammarnewPathNamepath2
在上面的代碼中,我們添加了兩個路徑,但是我們可以添加任意多的路徑,但是我們必須避免在同一個字元串中出現反斜杠。這是因為反斜杠與一些特殊字元結合在一起會產生一些問題,比如n ,會增加一個新行,t ,會在輸出中增加一個製表符空間。
我們建議在joinPath() 函數中單獨添加每個路徑。
在代碼裡面使用Path() 和PureWindowsPath() 函數之前,請確保導入這些函數。查看pathlib 庫以瞭解更多細節。