python中的路徑拼接問(wèn)題
python路徑拼接
使用:
- os.path.join()函數(shù):連接兩個(gè)或更多的路徑名組件
- 如果有一個(gè)組件是一個(gè)絕對(duì)路徑,則在它之前的所有組件均會(huì)被舍棄
- 如果最后一個(gè)組件為空,則生成的路徑以一個(gè) \ 分隔符結(jié)尾
def test2(): ? ? s1, s2, s3 = 'home', 'courses', 'test' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?# home\courses\test ? ? s2 = '/courses' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?# /courses\test ? ? s1, s2, s3 = '\home', 'courses', 'test' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?# \home\courses\test ? ? s1, s2, s3 = '\home', 'courses', '' ? ? res = os.path.join(s1, s2, s3) ? ? print(res) ?#\home\courses\
home\courses\test
/courses\test
\home\courses\test
\home\courses\
python os.path.join路徑拼接錯(cuò)誤
ss = 'E:\\Cloud\\20200813105812L\\res\\1\\425' a = '\\8_live_1962854245_export_files\\media' c = os.path.join(ss,a) print(c)
得到的是如下結(jié)果:
os.path.join()函數(shù)
連接兩個(gè)或更多的路徑名組件:
參數(shù)可能存在多個(gè)
從右邊開始數(shù),遇到第一個(gè)以”/”開頭的參數(shù),開始拼接,這個(gè)參數(shù)左邊的全部丟棄
print("0:",os.path.join('\\aaaa','bbbb','ccccc.txt')) print("0:",os.path.join('aaaa','\\bbbb','ccccc.txt')) print("0:",os.path.join('aaaa','bbbb','\\ccccc.txt')) print("0:",os.path.join('aaaa','\\bbbb','\\ccccc.txt')) print("0:",os.path.join('aaaa','/bbbb','\\ccccc.txt')) print("0:",os.path.join('aaaa','/bbbb','/ccccc.txt')) 結(jié)果: 0: \aaaa\bbbb\ccccc.txt 0: \bbbb\ccccc.txt 0: \ccccc.txt 0: \ccccc.txt 0: \ccccc.txt 0: /ccccc.txt
從右邊開始數(shù),遇到第一個(gè)以”/”開頭的參數(shù),開始拼接,這個(gè)參數(shù)左邊的全部丟棄
print("1:",os.path.join('aaaa','xxxxxx','./bbb','ccccc.txt')) print("1:",os.path.join('./aaaa','xxxxxx','./bbb','./ccccc.txt')) 結(jié)果: 1: aaaa\xxxxxx\./bbb\ccccc.txt 1: ./aaaa\xxxxxx\./bbb\./ccccc.txt
帶盤符,/,\各種復(fù)雜情況(正式使用前先測(cè)試,也可以去看看源碼具體是怎么解析的)
# 后面的斜杠反斜杠 print("1:",os.path.join('c:','bbb')) print("1:",os.path.join('c:','bbb/\\','ccccc.txt')) # 未加盤符 print("2:",os.path.join('c','/bbb','ccccc.txt')) # 會(huì)以/bbb開頭 print("2:",os.path.join('c:','/bbb','ccccc.txt')) # 雖然有反斜桿 但是依舊以C:開頭 print("2:",os.path.join('c:/','/bbb','ccccc.txt')) # 多個(gè)/只會(huì)有一個(gè) # 盤符后面未加斜杠 print("3:",os.path.join('c:','bbb','ccccc.txt')) print("3:",os.path.join('c:/','bbb','ccccc.txt')) 結(jié)果: 1: c:bbb 1: c:bbb/\ccccc.txt 2: /bbb\ccccc.txt 2: c:/bbb\ccccc.txt 2: c:/bbb\ccccc.txt 3: c:bbb\ccccc.txt 3: c:/bbb\ccccc.txt
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Eclipse和PyDev搭建完美Python開發(fā)環(huán)境教程(Windows篇)
這篇文章主要介紹了Eclipse和PyDev搭建完美Python開發(fā)環(huán)境教程(Windows篇),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下。2016-11-11Python設(shè)計(jì)模式中的結(jié)構(gòu)型橋接模式
這篇文章主要介紹了Python設(shè)計(jì)模式中的結(jié)構(gòu)型橋接模式,橋接模式即Bridge?Pattern,將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化.下面來(lái)看看文章的詳細(xì)內(nèi)容介紹吧2022-02-02使用Mac時(shí)psycopg2導(dǎo)入PyCharm失敗的解決
這篇文章主要介紹了使用Mac時(shí)psycopg2導(dǎo)入PyCharm失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01利用Python實(shí)現(xiàn)自制文件搜索小工具
當(dāng)自己電腦文件很多還有點(diǎn)亂,不記得自己文件放哪里的時(shí)候,用電腦自帶的搜索文件,這個(gè)等待時(shí)間可慢了。所以我們不如自己用python做一個(gè)搜索工具!犄角旮旯的文件都能一秒鐘搜索出來(lái)的那種2022-09-09批量將ppt轉(zhuǎn)換為pdf的Python代碼 只要27行!
這篇文章主要為大家詳細(xì)介紹了批量將ppt轉(zhuǎn)換為pdf的Python代碼,只要27行,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Python multiprocessing模塊中的Pipe管道使用實(shí)例
這篇文章主要介紹了Python multiprocessing模塊中的Pipe管道使用實(shí)例,本文直接給出使用實(shí)例,需要的朋友可以參考下2015-04-04在Python中過(guò)濾Windows文件名中的非法字符方法
今天小編就為大家分享一篇在Python中過(guò)濾Windows文件名中的非法字符方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06