如何解決Python讀取圖片路徑存在轉(zhuǎn)義字符的問(wèn)題
普遍解決路徑中存在轉(zhuǎn)義字符的問(wèn)題的方法
普遍解決轉(zhuǎn)義字符的問(wèn)題,無(wú)非是以下這三種。
1.在路徑前添加r
直接在路徑前面加r,這種方法能夠使字符保持原始的意思。
比如下面這種:
path=r"D:\MindSpore\Dearui\source\ces\0AI.png"
2.將反斜杠“\”替換為正斜杠
path="D:\MindSpore\Dearui\source\ces/0AI.png"
3.將反斜杠“\”替換為雙反斜杠“\\”
path="D:\\MindSpore\\Dearui\\source\\ces\\0AI.png"
使用os來(lái)讀取圖片的路徑
這里我們采用了os來(lái)連接文件夾名與文件名。
具體方法如下:
paths=r"D:\MindSpore\Dearui\source\ces" imgfile = [] file_list = os.listdir(paths) for i in file_list: newph = os.path.join(paths, i) imgfile.append(newph) print(imgfile)
最后我們先直接打印出這個(gè)列表。
['D:\\MindSpore\\Dearui\\source\\ces\\0AI.png', 'D:\\MindSpore\\Dearui\\source\\ces\\AI2.png', 'D:\\MindSpore\\Dearui\\source\\ces\\AI3.png']
這里在用os時(shí),可以看見是自動(dòng)采用的是雙反斜杠,有效規(guī)避了轉(zhuǎn)義字符,但這里有涉及到了列表讀取機(jī)制的問(wèn)題。
for f in imgfile: print(f)
一般我們是通過(guò)for循環(huán)這種方式來(lái)獲取列表中的圖片路徑,然而這里卻并非如我所想。
D:\MindSpore\Dearui\source\ces\0AI.png
D:\MindSpore\Dearui\source\ces\AI2.png
D:\MindSpore\Dearui\source\ces\AI3.png
使用for循環(huán)讀取,竟然將雙反斜杠變?yōu)榱藛涡备?,這也就導(dǎo)致了讀取路徑中存在了轉(zhuǎn)義字符,這里面可能涉及到讀取機(jī)制的問(wèn)題,具體是什么這里就不探究了,下面我們來(lái)說(shuō)下解決方案。
本文采取的方法
索性的是通過(guò)os,我們獲得的路徑是雙反斜杠,畢竟連'\'這種都屬于是轉(zhuǎn)義字符,我們還真沒(méi)什么辦法對(duì)它進(jìn)行變化。
newph = os.path.join(paths, i).replace("\\","/")
這樣修改就可以完成對(duì)轉(zhuǎn)義字符的修改,并且通過(guò)for循環(huán)打印出來(lái)的值也是符合條件的。
for循環(huán)打印:
D:/MindSpore/Dearui/source/ces/0AI.png
D:/MindSpore/Dearui/source/ces/AI2.png
D:/MindSpore/Dearui/source/ces/AI3.png
列表打?。?/p>
['D:/MindSpore/Dearui/source/ces/0AI.png', 'D:/MindSpore/Dearui/source/ces/AI2.png', 'D:/MindSpore/Dearui/source/ces/AI3.png']
此函數(shù)也被我收錄進(jìn)了pyzjr中,需要下載0.0.19版本之后才可見。
pip install pyzjr==0.0.19 def getPhotopath(paths): """ * log:0.0.19以后修改了一個(gè)比較大的bug,使用os讀取的路徑是“\\”,本來(lái)是沒(méi)有問(wèn)題的, 但如果使用列表循環(huán)讀取,居然變成了單斜杠。 * 功能:批量讀取文件夾下的圖片路徑 :param paths: 文件夾路徑 :return: 包含圖片路徑的列表 """ imgfile = [] file_list = os.listdir(paths) for i in file_list: if i[0] in ['n', 't', 'r', 'b', 'f'] or i[0].isdigit(): print(f"Error: 文件名 {i} 開頭出現(xiàn)錯(cuò)誤!") newph = os.path.join(paths, i).replace("\\","/") imgfile.append(newph) return imgfile
這里我添加了提示,可以指出可能是哪個(gè)文件出錯(cuò)了,便于后續(xù)問(wèn)題的查找,能夠手動(dòng)修改的,其實(shí)是最后的,但如果你執(zhí)意要用也是沒(méi)有任何問(wèn)題的。
到此這篇關(guān)于如何解決Python讀取圖片路徑存在轉(zhuǎn)義字符的問(wèn)題的文章就介紹到這了,更多相關(guān)Python讀取圖片路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python簡(jiǎn)單幾步實(shí)現(xiàn)時(shí)間日期處理到數(shù)據(jù)文件的讀寫
這篇文章主要為大家介紹了python簡(jiǎn)單幾步實(shí)現(xiàn)時(shí)間日期處理到數(shù)據(jù)文件的讀寫詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04PyTorch加載預(yù)訓(xùn)練模型實(shí)例(pretrained)
今天小編就為大家分享一篇PyTorch加載預(yù)訓(xùn)練模型實(shí)例(pretrained),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01在Keras中實(shí)現(xiàn)保存和加載權(quán)重及模型結(jié)構(gòu)
這篇文章主要介紹了在Keras中實(shí)現(xiàn)保存和加載權(quán)重及模型結(jié)構(gòu),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python統(tǒng)計(jì)python文件中代碼,注釋及空白對(duì)應(yīng)的行數(shù)示例【測(cè)試可用】
這篇文章主要介紹了Python統(tǒng)計(jì)python文件中代碼,注釋及空白對(duì)應(yīng)的行數(shù),涉及Python針對(duì)py文件的讀取、遍歷、判斷、統(tǒng)計(jì)等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Python在終端通過(guò)pip安裝好包以后在Pycharm中依然無(wú)法使用的問(wèn)題(三種解決方案)
這篇文章主要介紹了Python在終端通過(guò)pip安裝好包以后在Pycharm中依然無(wú)法使用的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03Python實(shí)現(xiàn)針對(duì)含中文字符串的截取功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)針對(duì)含中文字符串的截取功能,結(jié)合具體實(shí)例形式分析了Python針對(duì)utf-8及gb18030編碼的中文字符串截取操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09