如下面所示,如果我們用file的readline或readlines,在每一行后面都有一個\n回車符
直接os.path.exists(readline)時總會返回false
>>>fromos.pathimportexists>>>exists('dog.png')True>>>exists('dog.png\n')False
使用item.strip('\n') #前面的item為我定義的變量
去掉后再傳遞給os.path.exists(item) 就OK了。
補充:當os.path.exists(path)的path中包含有空格時返回結果為False的解決方案
之前有個問題一直沒有解決, 當路徑中或文件名中存在空格時,用os.path.exists(path)判斷是否存在時,都會返回False. 百思不得其解. 今天在用ipython偶到想到想了解一下到底是什么原因?
事實上,當用input()接收path輸入時,path中有空格時,生成的str是不一樣的. 如下:
In[4]:path=input('請將文件拖入:')
請將文件拖入:"C:\Users\xxxxx\Desktop\filename with space.txt"
In[5]:pathOut[5]:'"C:\\Users\\xxxxx\\Desktop\\filenamewithspace.txt"'In[6]:path2=input('請將文件拖入:')
請將文件拖入:C:\Users\xxxxx\Desktop\filenamewithspace.txt
In[7]:path2Out[7]:'C:\\Users\\xxxxx\\Desktop\\filenamewithspace.txt'In[8]:os.path.exists(path)Out[8]:FalseIn[9]:os.path.exists(path2)Out[9]:True
很明顯,帶有space時生了的str多了一層""字符串,故將多余的""去掉應該就可以了.以下為驗證實例
In[10]:path3=path.replace('\"','')In[11]:path3Out[11]:'C:\\Users\\xxxxx\\Desktop\\filenamewithspace.txt'In[12]:os.path.exists(path3)Out[12]:True
當前讀取手機存儲空間的文件時,當手機root目錄中存在還中文或帶空格的文件/文件夾時(如下圖),就會出錯.
一般這時為了要讀出這些文件夾,一般的操作為:
In[23]:cmd='adbshellls/sdcard/'In[24]:file_list=os.popen(cmd).readlines()---------------------------------------------------------------------------UnicodeDecodeErrorTraceback(mostrecentcalllast)<ipython-input-24-b7ae01065f81>in<module>---->1file_list=os.popen(cmd).readlines()UnicodeDecodeError:'gbk'codeccan'tdecodebyte0xaeinposition10:illegalmultibytesequence
一般會報以上的錯誤或是不報錯,但是中文文件/文件名可能為亂碼,從以下的help(os.popen)可以了解后,os.popen()也是不能設置encode方式的,無解哈.
In[25]:help(os.open)Helponbuilt-infunctionopeninmodulent:open(path,flags,mode=511,*,dir_fd=None)OpenafileforlowlevelIO.Returnsafiledescriptor(integer).Ifdir_fdisnotNone,itshouldbeafiledescriptoropentoadirectory,andpathshouldberelative;pathwillthenberelativetothatdirectory.dir_fdmaynotbeimplementedonyourplatform.Ifitisunavailable,usingitwillraiseaNotImplementedError.
所以又回到之前寫的一篇文章上,要用subprocess.run()全面替換掉os.system/os.popen,這樣就可以解決這些問題了.
In[27]:cmd='adbshellls/sdcard/'In[28]:file_list=subprocess.run(cmd,capture_output=True,encoding='utf-8',shell=True).stdout....:splitlines()In[29]:file_list[0:3]Out[29]:['0000','00新文件夾','00新文件夾test']
關于在Python中使用os.path.exists()函數時返回false如何解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注本站行業資訊頻道了解更多相關知識。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
什么是外貿收款?外貿收款,顧名思義就是對外貿易收款,可以簡單的分為兩類:1,網上支付類,可以直接在網上完成付款,快捷、方便,第三方支付公司保障,可拒付,消費者利益得到保障。從另一方面來說,相對的風險稍大,主要以小額收款為主。①電子賬戶類別:主要付款是電子賬戶對電子賬戶模式(類似于支付寶與支付寶交易,雙方均需要注冊、有賬戶),主要有PayPal、MoneyBookers、Ap、Google chec...
大學生買基金怎么買?大學生可以買基金,并且購買非常方便,支付寶平臺、微信等平臺都可以直接購買基金,基金對于投資者年齡沒有限制。大學生購買基金建議選一些風險性比較低的,如貨幣基金、債券基金等,雖然收益不高但是勝在穩定,比較適合大學生投資。大學生買基金買多少合適?基金的門檻并不高,有的一元就可以購買,有的十元就可以購買,買多少都是可以的,但是要根據自身情況來考慮,比如說:某學生除去日常開銷的生活費,還...
(資料圖片)有關于齊國的歷史方面的知識,小編在此整里出來,給大家作為參考,下面就詳細的介紹一下關于齊國的歷史的相關內容。公元前656年,齊合諸侯之師侵蔡伐楚,與楚盟于召陵。此后,齊多次大會諸侯。公元前651年,齊會魯、宋、衛、鄭、許、曹于葵丘。齊霸業達于頂峰。春秋末年,齊衰落,卿大夫相互兼并。公元前548年,崔抒殺莊公,立景公。公元前546年,慶封滅崔氏公元前314年,在孟軻勸說下,宣王命匡章率“...