摘要:返回的絕對(duì)路徑名返回文件名,等同于調(diào)用返回值的第二個(gè)元素。與不同,此函數(shù)的返回值一定是一個(gè)有效路徑。返回值是自時(shí)間算起的浮點(diǎn)值,單位為秒。規(guī)范路徑名中的多余分隔符以及上級(jí)引用,如將全部轉(zhuǎn)換為。
os.path.abspath(path)
返回path的絕對(duì)路徑名
>>> os.path.abspath(".") "C:UsersadminDesktopPycharmProjectspython_demo"os.path.basename(path)
返回文件名,等同于調(diào)用os.path.split(path)返回值的第二個(gè)元素。
>>> os.path.basename("/usr/bin/") "" >>> os.path.basename("/usr/bin") "bin"
python的basename和Unix shell的basename指令是有區(qū)別的:
[root@localhost ~]# basename "/usr/bin" bin [root@localhost ~]# basename "/usr/bin/" binos.path.commonpath(paths)
返回序列參數(shù)paths中最長(zhǎng)的公共子路徑。如果paths為空,或者同時(shí)包含絕對(duì)路徑和相對(duì)路徑,拋出ValueError異常。
與os.path.commonprefix(list)不同,此函數(shù)的返回值一定是一個(gè)有效路徑。
>>> os.path.commonpath(["/home/admin", "/home/admin/.ssh"]) "/home/admin" >>> os.path.commonpath(["/home/admin1", "/home/admin2"]) "/home"os.path.commonprefix(list)
返回list中所有路徑的最大長(zhǎng)度的公共路徑前綴,如果list為空返回空字符串。其返回值可能是一個(gè)無(wú)效路徑。
>>> os.path.commonprefix([".", "/root"]) "" >>> os.path.commonprefix(["/home/admin1", "/home/admin2"]) "/home/admin"os.path.dirname(path)
返回目錄名,等同于調(diào)用os.path.split(path)返回值的第一個(gè)元素。
>>> os.path.dirname("/usr/bin/") "/usr/bin" >>> os.path.dirname("/usr/bin") "/usr"os.path.exists(path)
判斷path是否存在。如果path是一個(gè)已存在的路徑或一個(gè)打開的文件描述符(int),返回True。
在某些平臺(tái),即使path真實(shí)存在,但如果沒(méi)有針對(duì)path執(zhí)行os.stat()的權(quán)限,仍有可能返回False。
如果path是一個(gè)受到破壞的軟鏈接(原始文件/文件夾被刪除),返回False。
判斷path是否存在。如果path是一個(gè)已存在的路徑,返回True。
如果path是一個(gè)受到破壞的軟鏈接(原始文件/文件夾被刪除),返回True。
返回把path中包含的"~"和"~user"轉(zhuǎn)換成用戶目錄后的路徑。
Unix平臺(tái):
對(duì)于path中的~,如果設(shè)置了環(huán)境變量HOME,使用HOME的值替換;否則使用當(dāng)前用戶的用戶主目錄替換;
對(duì)于path中的~user,直接使用user的用戶主目錄替換
>>> os.path.expanduser("~/local/mysql") "/root/local/mysql" >>> os.path.expanduser("~admin/local/mysql") "/home/admin/local/mysql"
Windows平臺(tái):
對(duì)于path中的~,使用環(huán)境變量HOME或USERPROFILE的值,或HOMEPATH和HOMEDRIVE的值的組合替換;
對(duì)于path中的~user,將替換"~"的路徑的最后一個(gè)目錄組件剝離,使用user替換
# 查看環(huán)境變量 (python) D:>echo %HOME% %HOME% (python) D:>echo %USERPROFILE% C:Usersadmin (python) D:>echo %HOMEPATH% Usersadmin (python) D:>echo %HOMEDRIVE% C:
>>> os.path.expanduser("~local") "C:Usersadminlocal" # 將C:Usersadmin中的admin替換為anyuser >>> os.path.expanduser("~anyuserlocal") "C:Usersanyuserlocal"
如果擴(kuò)展失敗或path未以"~"為前綴,不做改動(dòng)直接返回。
os.path.expandvars(path)擴(kuò)展path中的環(huán)境變量并返回。path中$NAME和${NAME}格式的子串將被對(duì)應(yīng)的環(huán)境變量替換(不同平臺(tái)存在是否區(qū)分大小寫的問(wèn)題)。格式錯(cuò)誤或變量不存在,將直接返回。
在windows中還包括%NAME%的形式。
最后訪問(wèn)時(shí)間。返回值是自epoch時(shí)間算起的浮點(diǎn)值,單位為秒。如果path不存在或無(wú)法訪問(wèn)將拋出異常。
>>> getatime("/root/demo.txt") 1545345643.4549878os.path.getmtime(path)
最后修改時(shí)間。返回值是自epoch時(shí)間算起的浮點(diǎn)值,單位為秒。如果path不存在或無(wú)法訪問(wèn)將拋出異常。
os.path.getctime(path)在Unix系統(tǒng),表示最近一次修改元數(shù)據(jù)的時(shí)間;在Windows系統(tǒng),表示創(chuàng)建時(shí)間。返回值是自epoch時(shí)間算起的浮點(diǎn)值,單位為秒。如果path不存在或無(wú)法訪問(wèn)將拋出異常。
os.path.getsize(path)以字節(jié)為單位返回路徑大小。如果path不存在或無(wú)法訪問(wèn)將拋出異常。
如果path指向一個(gè)文件夾,返回值不代表該文件夾真實(shí)占用的大小。
判斷是否為絕對(duì)路徑。
os.path.isfile(path)判斷是否為文件。符號(hào)鏈接判定為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 # 原文件被刪除導(dǎo)致軟鏈接受到破壞 >>> isfile("/root/demo.link") True >>> isfile("/root/sample.link") Falseos.path.isdir(path)
判斷是否為文件夾。符號(hào)鏈接判定為True,受到破壞判定為False
os.path.islink(path)判斷是否為符號(hào)鏈接,即使是受到破壞的符號(hào)鏈接,也會(huì)返回True。
如果Python運(yùn)行環(huán)境不支持符號(hào)鏈接,返回False。
判斷是否為掛載點(diǎn)。
[root@localhost ~]# df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) /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
對(duì)于Windows系統(tǒng),磁盤符根目錄及UNC路徑的共享目錄總是掛載點(diǎn):
>>> ismount("c:/") True >>> ismount("http://DESKTOP-BV17H6X/Users/") Trueos.path.join(path, *paths)
路徑拼接。
將path與paths中的非空路徑組件使用系統(tǒng)分隔符拼接。如果最后一個(gè)組件是空字符串,返回值將以分隔符結(jié)尾:
>>> join("/root", "a", "b", "", "c") "/root/a/b/c" >>> join("/root", "a", "b", "c", "") "/root/a/b/c/"
如果paths中任意一個(gè)組件是絕對(duì)路徑,將直接以該組件開始進(jìn)行拼接:
>>> join("/root", "a", "/b", "c") "/b/c"
在Windows中,如果paths中出現(xiàn)不含磁盤符的絕對(duì)路徑,不會(huì)重置磁盤符:
>>> join("c:/root", "/foo") "c:/foo"
如果paths中出現(xiàn)含磁盤符的,直接從該路徑開始進(jìn)行拼接:
>>> join("c:/root", "e:/root", "/foo") "e:/foo"
每個(gè)磁盤符有一個(gè)當(dāng)前工作目錄,下例表示相對(duì)于該磁盤當(dāng)前工作目錄的路徑foo(e:foo而非e:foo):
>>> os.path.abspath(join("e:", "foo")) "E:git_projectfoo"os.path.normcase(path)
規(guī)范路徑名大小寫。在Unix和Mac OS X系統(tǒng),直接返回path;在大小寫不敏感的系統(tǒng)(如Windows),會(huì)將path轉(zhuǎn)換為小寫字母。此外Windows還會(huì)將/轉(zhuǎn)換為。
os.path.normpath(path)規(guī)范路徑名中的多余分隔符以及上級(jí)引用,如A//B, A/B/, A/./B and A/foo/../B將全部轉(zhuǎn)換為A/B。Windows系統(tǒng)還會(huì)將/轉(zhuǎn)換為。
os.path.realpath(path)將包含符號(hào)鏈接的path轉(zhuǎn)換為真實(shí)路徑名稱。
os.path.relpath(path, start=os.curdir)返回相對(duì)于當(dāng)前工作目錄或指定的start目錄的相對(duì)路徑。
os.path.samefile(path1, path2)判斷path1和path2是否指向同一個(gè)文件或目錄,取決于設(shè)備號(hào)和i-node。如果調(diào)用os.stat()失敗將拋出異常。
os.path.sameopenfile(fp1, fp2)判斷文件描述符fp1和fp2是否指向同一個(gè)文件或目錄。
os.path.samestat(stat1, stat2)判斷狀態(tài)元組stat1和stat2是否指向同一個(gè)文件或目錄,參數(shù)可能是os.fstat()、os.lstat或os.stat()的返回值。
os.path.split(path)將path拆分為(head, tail)的元組形式。
tail部分總是不包含斜杠,如果path以斜杠結(jié)尾,tail將為空字符串;尾部的斜杠也會(huì)從head中去除,除非path是根路徑:
>>> split("/home/admin/.ssh/") ("/home/admin/.ssh", "") >>> split("/") ("/", "")
如果path不包含斜杠,head部分將為空字符串:
>>> split("home") ("", "home")
如果path為空字符串,head和tail都將為空:
>>> split("") ("", "")os.path.splitdrive(path)
將path拆分為(drive, tail)的元組形式。
在不使用磁盤符的系統(tǒng),drive總是為空字符串;在Windows系統(tǒng),會(huì)將path分割為UNC共享點(diǎn)/磁盤驅(qū)動(dòng),及其相對(duì)路徑。
# 包含磁盤符的路徑 >>> splitdrive("c:/dir") ("c:", "/dir") # UNC路徑,分割后的drive包含主機(jī)名和共享點(diǎn)(到第四個(gè)分隔符但不包括第四個(gè)) >>> splitdrive("http://servername/sharename/directory/filename") ("http://servername/sharename", "/directory/filename")os.path.splitext(path)
將path拆分為(root, ext)的元組形式。
ext為空字符串或者以.打頭且只包含1個(gè).的字符串:
>>> 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", "")os.path.supports_unicode_filenames
判斷是否能使用任意Unicode字符串作為文件名(在文件系統(tǒng)強(qiáng)加的限制內(nèi))
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42849.html
摘要:下面為大家分享一篇實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。類似于高級(jí),而且主要強(qiáng)大之處在于其對(duì)文件的復(fù)制與刪除操作更是比較支持好。附模塊庫(kù)的使用有關(guān)文件夾與文件的查找,刪除等功能在模塊中實(shí)現(xiàn)。下面為大家分享一篇Python 實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起過(guò)來(lái)看看吧Python 實(shí)現(xiàn)刪除某路徑下文件及...
摘要:下面為大家分享一篇實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。類似于高級(jí),而且主要強(qiáng)大之處在于其對(duì)文件的復(fù)制與刪除操作更是比較支持好。附模塊庫(kù)的使用有關(guān)文件夾與文件的查找,刪除等功能在模塊中實(shí)現(xiàn)。下面為大家分享一篇Python 實(shí)現(xiàn)刪除某路徑下文件及文件夾的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起過(guò)來(lái)看看吧Python 實(shí)現(xiàn)刪除某路徑下文件及...
摘要:報(bào)告這錯(cuò)誤后,繼續(xù)或者拋出終止。調(diào)用方式當(dāng)前遍歷的目錄目錄下的目錄列表目錄下的文件列表在進(jìn)行文件內(nèi)指針重置的時(shí)候,除了基礎(chǔ)篇文件部分介紹的絕對(duì)定位外,通過(guò)模塊還可以實(shí)現(xiàn)相對(duì)定位。 Python的目錄操作主要依賴于os和 shutil 模塊. Python目錄操作 新建目錄 os.mkdir(./test/) #在當(dāng)前目錄下新建名為test的目錄,存在則報(bào)錯(cuò) 新建多級(jí)目錄 os.make...
摘要:目錄操作文件與文件夾操作文件與文件夾案例批量修改文件名案例批量修改文件名模塊是標(biāo)準(zhǔn)庫(kù)中的一個(gè)用于訪問(wèn)操作系統(tǒng)功能的模塊。 目錄 OS操作文件與文件夾 案例—批量修改文件名 OS模塊是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)用于訪問(wèn)操作系統(tǒng)功能的模塊。使用OS模塊中提供的接口,可以實(shí)現(xiàn)跨平臺(tái)訪...
摘要:在日常的學(xué)習(xí)生活工作中,我們有時(shí)會(huì)遇到需要合并文件的需求。模塊的相關(guān)參考文檔網(wǎng)址為本文將介紹如何利用來(lái)完成文件的合并。 ??在日常的學(xué)習(xí)生活工作中,我們有時(shí)會(huì)遇到需要合并PDF文件的需求。這時(shí),我們可以利用相關(guān)的PDF軟件(如Adobe Acrobat Reader DC)來(lái)完成這個(gè)任務(wù),幸運(yùn)的是,Python也為我們提供了這方面的處理模塊PyPDF2, 借用它,我們可以利用Pytho...
閱讀 5257·2021-10-15 09:42
閱讀 1621·2021-09-22 16:05
閱讀 3280·2021-09-22 15:57
閱讀 3418·2019-12-27 12:06
閱讀 978·2019-08-29 15:16
閱讀 2888·2019-08-26 12:24
閱讀 391·2019-08-26 12:02
閱讀 1897·2019-08-23 16:00