国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Python 解決相對路徑問題:"No such file or directory"

瀏覽:88日期:2022-07-22 17:15:54

如果你取相對路徑不是在主文件里,可能就會有相對路徑問題:'No such file or directory'。

因為 python 的相對路徑,相對的都是主文件。

如下目錄結(jié)構(gòu):

| -- main.py | -- conf.py | -- start.png| -- config.txt

main.py 是主文件。

conf.py 里引用 config.txt 用相對路徑。

如果用 . 或 … 相對的是 main.py,所以用 './config.txt',相對于 main.py 是同一個目錄下。

.指當前文件所在的文件夾,… 指當前文件的上一級目錄。

補充知識:解決python模塊調(diào)用時代碼中使用相對路徑訪問的文件,提示文件不存在的問題

問題分析:

在編碼過程中使用相對路徑使代碼的穩(wěn)定性更好,即使項目目錄發(fā)生變更,只要文件相對路徑不變,代碼依然可以穩(wěn)定運行。但是在python代碼中使用相對路徑時會存在以下問題,示例代碼結(jié)構(gòu)如下:

Python 解決相對路徑問題:"No such file or directory"

其中test包中包含兩個文件first.py和user_info.txt,first.py代碼中只有一個函數(shù)read_file,用于讀取user_info.txt文件第一行的內(nèi)容,并打印結(jié)果,讀取文件使用相對路徑,代碼如下:

import osprint('當前路徑 -> %s' %os.getcwd())def read_file() : with open('user_info.txt' , encoding = ’utf-8’) as f_obj : content = f_obj.readline() print('文件內(nèi)容 -> %s' %content) if __name__ == ’__main__’ : read_file()

first.py程序代碼執(zhí)行結(jié)果如下:

當前路徑 -> E:程序python代碼PythonDataAnalysisDemotest

文件內(nèi)容 -> hello python !!!

與test在同一目錄下存在一個second.py文件,在這個文件中調(diào)用first.py文件中的read_file方法讀取user_info.txt文件,代碼如下:

from test import first

first.read_file()

second.py程序執(zhí)行結(jié)果如下:

當前路徑 -> E:程序python代碼PythonDataAnalysisDemo

File 'E:/程序/python代碼/PythonDataAnalysis/Demo/second.py', line 8, in <module>

first.read_file()

File 'E:程序python代碼PythonDataAnalysisDemotestfirst.py', line 10, in read_file

with open('user_info.txt' , encoding = ’utf-8’) as f_obj :

FileNotFoundError: [Errno 2] No such fileor directory: ’user_info.txt’

以上信息提示user_info.txt 文件不存在,查看os.getcwd() 函數(shù)輸出的當前路徑會發(fā)現(xiàn),當前路徑是 XXX/Demo,而不是上一次單獨執(zhí)行first.py 文件時的 XXX/Demo/test了,所以程序報錯文件不存在的根本原因是因為當前路徑變了,導(dǎo)致代碼中的由相對路徑構(gòu)成的絕對路徑發(fā)生了變化。

解決方法:

對于這種問題,只需要在使用相對路徑進行文件訪問的模塊中加入以下代碼即可(加粗內(nèi)容),修改后的first.py代碼如下:

import osprint('當前路徑 -> %s' %os.getcwd())current_path = os.path.dirname(__file__)def read_file() : with open(current_path + '/user_info.txt' , encoding = ’utf-8’) as f_obj : content = f_obj.readline() print('文件內(nèi)容 -> %s' %content) if __name__ == ’__main__’ : read_file()

first.py 程序執(zhí)行結(jié)果如下:

當前路徑 -> E:程序python代碼PythonDataAnalysisDemotest

current_path -> E:/程序/python代碼/PythonDataAnalysis/Demo/test

文件內(nèi)容 -> hello python !!!

second.py代碼不變,second.py代碼執(zhí)行結(jié)果如下:

當前路徑 -> E:程序python代碼PythonDataAnalysisDemo

current_path -> E:程序python代碼PythonDataAnalysisDemotest

文件內(nèi)容 -> hello python !!!

由以上執(zhí)行結(jié)果可以發(fā)現(xiàn),雖然first.py和second.py代碼執(zhí)行時os.getcwd()函數(shù)的輸出結(jié)果還是不一致,但是current_path = os.path.dirname(__file__)

代碼得到的current_path路徑是相同的,current_path就是first.py文件所處的路徑,然后再由current_path 和user_info.txt 組成的文件絕對路徑則是固定的,這樣就可以確保在進行模塊導(dǎo)入時,模塊中使用相對路徑進行訪問的文件不會出錯。

以上這篇Python 解決相對路徑問題:'No such file or directory'就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 一级毛片 在线播放 | 精品400部自拍视频在线播放 | 国产三级a三级三级 | 手机国产日韩高清免费看片 | 91精品免费久久久久久久久 | 99草精品视频 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 国产免费久久 | 久久久久久综合成人精品 | 久草福利社 | 日本高清在线不卡 | 美女脱了内裤张开腿让男人桶网站 | 久久精品最新免费国产成人 | 精品国产一区二区在线观看 | 91日本在线精品高清观看 | 国产亚洲欧美一区 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 香港一级纯黄大片 | 亚洲精品国产福利 | 99精品偷自拍 | 国产萌白酱在线一区二区 | 欧美国产成人免费观看永久视频 | 俄罗斯毛片免费大全 | 久草在线手机 | 欧美性色黄大片在线观看 | 久久成年片色大黄全免费网站 | 久久精品视频在线 | 日本黄色大片免费观看 | 韩国毛片视频 | 欧美大片国产在线永久播放 | 国产tv在线 | 亚洲线精品久久一区二区三区 | 久免费视频 | 一个人免费观看日本www视频 | 国产成人在线观看免费网站 | 国产激情一区二区三区成人91 | 精品伊人久久久久7777人 | 美女叉开腿让男人捅 | 可以看的毛片网站 | 美国毛片免费观看 | 国产免费网 |