python中os.path.exits()的坑
問題
有時(shí)候我們經(jīng)常會(huì)看到類似的代碼:
assert os.path.isdir(path_model_dir) assert os.path.exits(path_model_dir)
此處path_model_dir如果填寫的是一個(gè)相對(duì)路徑,那將會(huì)是災(zāi)難性的。我們需要注意的有以下幾個(gè)要素:
- os.path.exists() 方法并不直接使用sys.path中的路徑來(lái)查找文件,它是通過(guò)調(diào)用操作系統(tǒng)的接口來(lái)檢查給定路徑是否存在。
- 當(dāng)您使用相對(duì)路徑時(shí),Python 會(huì)首先將其解釋為相對(duì)于當(dāng)前工作目錄。如果您的程序被運(yùn)行在交互式解釋器中,那么當(dāng)前工作目錄通常是啟動(dòng)解釋器時(shí)所在的目錄。
上面這兩段話說(shuō)明,如果你填寫的是相對(duì)路徑,這里所說(shuō)的相對(duì)路徑是相對(duì)于當(dāng)前文件的相對(duì)路徑,還是相對(duì)解釋器的相對(duì)路徑,是相對(duì)運(yùn)行解釋器,還是調(diào)試解釋器,還是相對(duì)命令行的中的相對(duì)路徑?曾在同一個(gè)編輯器里編輯代碼,在運(yùn)行的時(shí)候是可以直接運(yùn)行的,但調(diào)試的時(shí)候卻一直報(bào)錯(cuò),后來(lái)發(fā)現(xiàn)同一編輯器里的調(diào)試解釋器和運(yùn)行解釋器的相對(duì)路徑是不同的(驚?。?。
而且os.path.exists() 方法并不直接使用sys.path中的路徑來(lái)查找文件,也不會(huì)使用~/.bashrc中的環(huán)境變量來(lái)查找文件,只會(huì)根據(jù)相對(duì)路徑和絕對(duì)路徑來(lái)查找文件。
建議
有兩點(diǎn)建議,核心要義在于使用絕對(duì)路徑。
- 直接絕對(duì)路徑寫死字符串
- (推薦)使用__file__拼接出相對(duì)于腳本文件的絕對(duì)路徑
有些人問sys.path.append(path)中增加的path是用來(lái)干嘛的,其實(shí)這里面增加的path主要用于import導(dǎo)包的。即如果您想要將其他目錄添加到 Python 的模塊搜索路徑中,可以將這些目錄添加到 sys.path 列表中。這將使 Python 在搜索模塊時(shí)自動(dòng)包括這些目錄。但是需要注意,這種方法是在 Python 導(dǎo)入模塊時(shí)使用的,而不是在調(diào)用 os.path.exists() 方法時(shí)。
到此這篇關(guān)于python中os.path.exits()的坑的文章就介紹到這了,更多相關(guān)python os.path.exits() 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 三分鐘熟練使用Python的os.path.join()
- python中的os.path.join使用方法詳解
- Python中os.path.join函數(shù)的用法示例詳解
- python中join與os.path.join()函數(shù)實(shí)例詳解
- python中os.path.join()函數(shù)實(shí)例用法
- python中的split()函數(shù)和os.path.split()函數(shù)使用詳解
- 如何使用python3獲取當(dāng)前路徑及os.path.dirname的使用
- python os.path.isfile 的使用誤區(qū)詳解
- python os.path.isfile()因參數(shù)問題判斷錯(cuò)誤的解決
- python中os.stat().st_size、os.path.getsize()獲取文件大小
相關(guān)文章
Python學(xué)習(xí)之隨機(jī)模塊random詳解
本文我們將學(xué)習(xí)一下Python中非常簡(jiǎn)單但也非常有用的模塊—random ,此模塊主要用于生成隨機(jī)數(shù),接下來(lái)就讓我們了解一下random模塊中最常見的幾種方法吧2022-03-03
Python+OpenCV圖像處理之直方圖統(tǒng)計(jì)
直方圖就是對(duì)圖像的另外一種解釋,它描述了整幅圖像的灰度分布。通過(guò)直方圖我們可以對(duì)圖像的亮度、灰度分布、對(duì)比度等有了一個(gè)直觀的認(rèn)識(shí)。本文將為大家詳細(xì)介紹一下如何通過(guò)OpenCV實(shí)現(xiàn)直方圖統(tǒng)計(jì),感興趣的可以了解一下2021-12-12
Python圖像處理庫(kù)PIL的ImageFont模塊使用介紹
這篇文章主要介紹了Python圖像處理庫(kù)PIL的ImageFont模塊使用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
python中使用xlrd讀excel使用xlwt寫excel的實(shí)例代碼
這篇文章主要介紹了python中使用xlrd讀excel使用xlwt寫excel的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python流程控制 while循環(huán)實(shí)現(xiàn)解析
這篇文章主要介紹了Python流程控制 while循環(huán)實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
pytorch動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)(擬合)實(shí)現(xiàn)
這篇文章主要介紹了pytorch動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)(擬合)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python+pyqt5實(shí)現(xiàn)24點(diǎn)小游戲
這篇文章主要為大家詳細(xì)介紹了python+pyqt5實(shí)現(xiàn)24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
pytorch掉坑記錄:model.eval的作用說(shuō)明
這篇文章主要介紹了pytorch掉坑記錄:model.eval的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06

