在python中路徑含有空格的問(wèn)題及解決
在python中路徑含有空格的解決
Application.filename=tkinter.filedialog.askopenfilename(filetypes=[('docx|doc格式','*.docx;*.doc')]) #獲取的docx文件路徑
通過(guò)函數(shù)tkinter.filedialog.askopenfilename()獲取的路徑使用/做分隔符
而word.Documents.Open(路徑)中的路徑使用\為分隔符
解決方法
s = Application.filename.split("/")#解決文件夾及文件路徑含有空格。原因是tkinter.filedialog.askopenfilename獲取的路徑(Application.filename)分隔符是/而日文系統(tǒng) \. path_test = '' for i in s: path_test = path_test + i + '\\\\' #此處無(wú)法使用r'路徑格式'因此在上面 使用'\\\\'格式處理 path_test1 = path_test[0:-2] path_test2 = path_test1
python調(diào)用程序路徑中包空格,及包含特殊字符
解決辦法
import os s = r'"C:\Program Files\Google\Chrome\Application\chrome.exe"' print(s) os.system(s)
也就是在調(diào)用的路徑中如果包含空格,需要將調(diào)用的路徑用"
引起來(lái)
擴(kuò)展知識(shí)
1.windows平臺(tái)這里只能用 雙引號(hào)
,cmd
不能識(shí)別單引號(hào)包含的路徑 ,linux即可以用雙引號(hào)也可以用單引號(hào),但只要有路徑中包含空格就需要用雙引號(hào)包裹住
2.為什么前面的程序去掉 r
也能運(yùn)行?
首先要明白 r
表示什么意思,r
在python字符串中表示原始字符,也就是你字符串中寫(xiě)的是什么就是什么,不經(jīng)過(guò)轉(zhuǎn)義,例如
print(r"\\\\") print("\\\\") print("\"") print(r"\"")
輸出:
\\\\
\\
"
\"
- 第一種因?yàn)橛胷表示原始字符串所以,所以都不轉(zhuǎn)義
- 第二中轉(zhuǎn)義兩個(gè)
\\
- 第三種可能大部分人不知道還有這種寫(xiě)法(或者不常用),一般如果要輸出
"
就用'
包裹起來(lái)就行了,但是其實(shí)是可以轉(zhuǎn)義輸出出來(lái)的 - 第四種同理
轉(zhuǎn)義的作用其實(shí)主要是為了 與python內(nèi)置的語(yǔ)法與 你聲明的字符串中包含的字符區(qū)分開(kāi)來(lái)
回歸問(wèn)題,為什么去掉r
也能運(yùn)行,原因就很明顯了,因?yàn)?路徑中沒(méi)有與python 內(nèi)置語(yǔ)法相同的字符,例如如果路徑中包含雙引號(hào),或者路徑首字母為 u (\u Unicode與中文互轉(zhuǎn) )等等,這類(lèi)路徑就必須加 r
,所以前面加上r
是最保險(xiǎn)的
其實(shí)導(dǎo)致問(wèn)題怎么復(fù)雜的主要原因在于
在windows上的路徑分割很奇葩與轉(zhuǎn)義字符的語(yǔ)法一樣為\
,在linux上路徑分割是/
, 所以linux 幾乎沒(méi)有調(diào)用路徑的問(wèn)題,另外很多編程語(yǔ)言轉(zhuǎn)義字符都是\
,或許這也是為什么編程習(xí)慣于用linux 原因吧
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python plt.boxplot函數(shù)及其參數(shù)使用小結(jié)
plt.boxplot函數(shù)用于繪制箱線圖,本文介紹了Python plt.boxplot函數(shù)及其參數(shù)使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Python通過(guò)Django實(shí)現(xiàn)用戶注冊(cè)和郵箱驗(yàn)證功能代碼
這篇文章主要介紹了Python通過(guò)Django實(shí)現(xiàn)用戶注冊(cè)和郵箱驗(yàn)證功能代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12python類(lèi)參數(shù)定義及數(shù)據(jù)擴(kuò)展方式unsqueeze/expand
本文主要介紹了python類(lèi)參數(shù)定義及數(shù)據(jù)擴(kuò)展方式unsqueeze/expand,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08python編寫(xiě)網(wǎng)頁(yè)爬蟲(chóng)腳本并實(shí)現(xiàn)APScheduler調(diào)度
爬蟲(chóng)爬的頁(yè)面是京東的電子書(shū)網(wǎng)站頁(yè)面,每天會(huì)更新一些免費(fèi)的電子書(shū),爬蟲(chóng)會(huì)把每天更新的免費(fèi)的書(shū)名以第一時(shí)間通過(guò)郵件發(fā)給我,通知我去下載2014-07-07Python?functools凍結(jié)參數(shù)小技巧實(shí)現(xiàn)代碼簡(jiǎn)潔優(yōu)化
這篇文章主要為大家介紹了Python?functools凍結(jié)參數(shù)小技巧實(shí)現(xiàn)代碼簡(jiǎn)潔優(yōu)化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12python開(kāi)發(fā)的小球完全彈性碰撞游戲代碼
這篇文章主要介紹了通過(guò)python開(kāi)發(fā)的一個(gè)小球完全彈性碰撞游戲效果,特分享下2013-10-10基于Python+OpenCV實(shí)現(xiàn)自動(dòng)掃雷功能
相信許多人很早就知道有掃雷這么一款經(jīng)典的游(顯卡測(cè)試)戲(軟件),掃雷作為一款在Windows9x時(shí)代就已經(jīng)誕生的經(jīng)典游戲,從過(guò)去到現(xiàn)在依然都有著它獨(dú)特的魅力,所以本文小編給大家介紹了如何使用Python+OpenCV實(shí)現(xiàn)自動(dòng)掃雷效果,感興趣的朋友可以參考下2023-12-12