返回path的絕對路徑名node
>>> os.path.abspath(".") 'C:\\Users\\admin\\Desktop\\PycharmProjects\\python_demo'
返回文件名,等同於調用os.path.split(path)
返回值的第二個元素。python
>>> os.path.basename("/usr/bin/") '' >>> os.path.basename("/usr/bin") 'bin'
python的basename和Unix shell的basename指令是有區別的:mysql
[root@localhost ~]# basename "/usr/bin" bin [root@localhost ~]# basename "/usr/bin/" bin
返回序列參數paths中最長的公共子路徑。若是paths爲空,或者同時包含絕對路徑和相對路徑,拋出ValueError
異常。
與os.path.commonprefix(list)
不一樣,此函數的返回值必定是一個有效路徑。git
>>> os.path.commonpath(["/home/admin", "/home/admin/.ssh"]) '/home/admin' >>> os.path.commonpath(["/home/admin1", "/home/admin2"]) '/home'
返回list中全部路徑的最大長度的公共路徑前綴,若是list爲空返回空字符串。其返回值多是一個無效路徑。sql
>>> os.path.commonprefix([".", "/root"]) '' >>> os.path.commonprefix(["/home/admin1", "/home/admin2"]) '/home/admin'
返回目錄名,等同於調用os.path.split(path)
返回值的第一個元素。shell
>>> os.path.dirname("/usr/bin/") '/usr/bin' >>> os.path.dirname("/usr/bin") '/usr'
判斷path是否存在。若是path是一個已存在的路徑或一個打開的文件描述符(int),返回True。
在某些平臺,即便path真實存在,但若是沒有針對path執行os.stat()
的權限,仍有可能返回False。
若是path是一個受到破壞的軟連接(原始文件/文件夾被刪除),返回False。windows
判斷path是否存在。若是path是一個已存在的路徑,返回True。
若是path是一個受到破壞的軟連接(原始文件/文件夾被刪除),返回True。centos
返回把path中包含的"~"和"~user"轉換成用戶目錄後的路徑。app
Unix平臺:
對於path中的~
,若是設置了環境變量HOME
,使用HOME
的值替換;不然使用當前用戶的用戶主目錄替換;
對於path中的~user
,直接使用user的用戶主目錄替換ssh
>>> os.path.expanduser("~/local/mysql") '/root/local/mysql' >>> os.path.expanduser("~admin/local/mysql") '/home/admin/local/mysql'
Windows平臺:
對於path中的~
,使用環境變量HOME
或USERPROFILE
的值,或HOMEPATH
和HOMEDRIVE
的值的組合替換;
對於path中的~user
,將替換"~"的路徑的最後一個目錄組件剝離,使用user替換
# 查看環境變量 (python) D:\>echo %HOME% %HOME% (python) D:\>echo %USERPROFILE% C:\Users\admin (python) D:\>echo %HOMEPATH% \Users\admin (python) D:\>echo %HOMEDRIVE% C:
>>> os.path.expanduser("~\\local") 'C:\\Users\\admin\\local' # 將C:\\Users\\admin中的admin替換爲anyuser >>> os.path.expanduser("~anyuser\\local") 'C:\\Users\\anyuser\\local'
若是擴展失敗或path未以"~"爲前綴,不作改動直接返回。
擴展path中的環境變量並返回。path中$NAME
和${NAME}
格式的子串將被對應的環境變量替換(不一樣平臺存在是否區分大小寫的問題)。格式錯誤或變量不存在,將直接返回。
在windows中還包括%NAME%
的形式。
最後訪問時間。返回值是自epoch時間算起的浮點值,單位爲秒。若是path不存在或沒法訪問將拋出異常。
>>> getatime("/root/demo.txt") 1545345643.4549878
最後修改時間。返回值是自epoch時間算起的浮點值,單位爲秒。若是path不存在或沒法訪問將拋出異常。
在Unix系統,表示最近一次修改元數據的時間;在Windows系統,表示建立時間。返回值是自epoch時間算起的浮點值,單位爲秒。若是path不存在或沒法訪問將拋出異常。
以字節爲單位返回路徑大小。若是path不存在或沒法訪問將拋出異常。
若是path指向一個文件夾,返回值不表明該文件夾真實佔用的大小。
判斷是否爲絕對路徑。
判斷是否爲文件。符號連接斷定爲True,受到破壞斷定爲False
[root@localhost ~]# ll 總用量 0 lrwxrwxrwx. 1 root root 8 12月 21 07:32 demo.link -> demo.txt -rw-r--r--. 1 root root 0 12月 21 07:31 demo.txt lrwxrwxrwx. 1 root root 10 12月 21 07:32 sample.link -> sample.txt # 原文件被刪除致使軟連接受到破壞 >>> isfile("/root/demo.link") True >>> isfile("/root/sample.link") False
判斷是否爲文件夾。符號連接斷定爲True,受到破壞斷定爲False
判斷是否爲符號連接,即便是受到破壞的符號連接,也會返回True。
若是Python運行環境不支持符號連接,返回False。
判斷是否爲掛載點。
[root@localhost ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root 18G 1.7G 16G 10% / devtmpfs 480M 0 480M 0% /dev tmpfs 492M 0 492M 0% /dev/shm tmpfs 492M 7.4M 485M 2% /run tmpfs 492M 0 492M 0% /sys/fs/cgroup /dev/sda1 497M 157M 340M 32% /boot tmpfs 99M 0 99M 0% /run/user/0 >>> ismount("/dev") True
對於Windows系統,磁盤符根目錄及UNC路徑的共享目錄老是掛載點:
>>> ismount("c:/") True >>> ismount("//DESKTOP-BV17H6X/Users/") True
路徑拼接。
將path與paths中的非空路徑組件使用系統分隔符拼接。若是最後一個組件是空字符串,返回值將以分隔符結尾:
>>> join("/root", "a", "b", "", "c") '/root/a/b/c' >>> join("/root", "a", "b", "c", "") '/root/a/b/c/'
若是paths中任意一個組件是絕對路徑,將直接以該組件開始進行拼接:
>>> join("/root", "a", "/b", "c") '/b/c'
在Windows中,若是paths中出現不含磁盤符的絕對路徑,不會重置磁盤符:
>>> join("c:/root", "/foo") 'c:/foo'
若是paths中出現含磁盤符的,直接從該路徑開始進行拼接:
>>> join("c:/root", "e:/root", "/foo") 'e:/foo'
每一個磁盤符有一個當前工做目錄,下例表示相對於該磁盤當前工做目錄的路徑foo(e:foo
而非e:\\foo
):
>>> os.path.abspath(join("e:", "foo")) 'E:\\git_project\\foo'
規範路徑名大小寫。在Unix和Mac OS X系統,直接返回path;在大小寫不敏感的系統(如Windows),會將path轉換爲小寫字母。此外Windows還會將/
轉換爲\\
。
規範路徑名中的多餘分隔符以及上級引用,如A//B
, A/B/
, A/./B
and A/foo/../B
將所有轉換爲A/B
。Windows系統還會將/
轉換爲\\
。
將包含符號連接的path轉換爲真實路徑名稱。
返回相對於當前工做目錄或指定的start目錄的相對路徑。
判斷path1和path2是否指向同一個文件或目錄,取決於設備號和i-node。若是調用os.stat()
失敗將拋出異常。
判斷文件描述符fp1和fp2是否指向同一個文件或目錄。
判斷狀態元組stat1和stat2是否指向同一個文件或目錄,參數多是os.fstat()
、os.lstat
或os.stat()
的返回值。
將path拆分爲(head, tail)
的元組形式。
tail部分老是不包含斜槓,若是path以斜槓結尾,tail將爲空字符串;尾部的斜槓也會從head中去除,除非path是根路徑:
>>> split("/home/admin/.ssh/") ('/home/admin/.ssh', '') >>> split("/") ('/', '')
若是path不包含斜槓,head部分將爲空字符串:
>>> split("home") ('', 'home')
若是path爲空字符串,head和tail都將爲空:
>>> split("") ('', '')
將path拆分爲(drive, tail)
的元組形式。
在不使用磁盤符的系統,drive老是爲空字符串;在Windows系統,會將path分割爲UNC共享點/磁盤驅動,及其相對路徑。
# 包含磁盤符的路徑 >>> splitdrive("c:/dir") ('c:', '/dir') # UNC路徑,分割後的drive包含主機名和共享點(到第四個分隔符但不包括第四個) >>> splitdrive("//servername/sharename/directory/filename") ('//servername/sharename', '/directory/filename')
將path拆分爲(root, ext)
的元組形式。
ext爲空字符串或者以.
打頭且只包含1個.
的字符串:
>>> splitext("/home/admin/.ssh/") ('/home/admin/.ssh/', '') >>> splitext("/home/admin/.ssh/id_rsa.ppk") ('/home/admin/.ssh/id_rsa', '.ppk') # 若是path以'.'打頭,ext將爲空字符串 >>> splitext('.cshrc') ('.cshrc', '')
判斷是否能使用任意Unicode字符串做爲文件名(在文件系統強加的限制內)