如何解決Python:報(bào)錯(cuò)[Errno 2]No such file or directory問題
Python報(bào)錯(cuò)[Errno 2]No such file or directory
問題現(xiàn)象
Python文件讀取操作時(shí),系統(tǒng)無法找到指定路徑的文件或目錄。其核心原因可歸結(jié)為以下三點(diǎn):
- 路徑拼寫錯(cuò)誤(如大小寫不一致、特殊字符未轉(zhuǎn)義)
- 工作目錄與相對(duì)路徑不匹配(常見于IDE或腳本調(diào)用場(chǎng)景)
- 文件實(shí)際不存在(包括擴(kuò)展名錯(cuò)誤或文件被移動(dòng))
其中,第二種為最常見的原因。主要為項(xiàng)目中調(diào)用.py文件中存在相對(duì)路徑,而在Pycharm中運(yùn)行與終端中運(yùn)行可能結(jié)果不同,一個(gè)報(bào)錯(cuò)一個(gè)不報(bào)錯(cuò)。
快速解決方案
1.使用絕對(duì)路徑
直接指定文件的完整路徑(適用于固定環(huán)境):
with open("/home/user/project/data/file.txt") as f: # Linux示例
pass注意Windows路徑需處理反斜杠轉(zhuǎn)義(如r"C:\Users\file.txt"或雙反斜杠)。
2.動(dòng)態(tài)獲取腳本所在目錄(推薦)
通過__file__屬性定位腳本的真實(shí)路徑,避免工作目錄干擾:
import os # 當(dāng)前文件的父目錄 script_dir = os.path.dirname(os.path.abspath(__file__)) # 當(dāng)前文件的父目錄的父目錄(我的此處為項(xiàng)目目錄) project_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 根據(jù)自己的需求選擇 file_path = os.path.join(script_dir, "data/file.txt") # 或者 file_path = os.path.join(project_dir, "data/file.txt")
此方法在多級(jí)目錄項(xiàng)目中尤為可靠。
其他原因排查
1.驗(yàn)證文件路徑與名稱
- 檢查路徑字符串的拼寫(包括英文冒號(hào)、斜杠方向等),例如
data\file.txt在Linux中需改為data/file.txt1 - 確認(rèn)文件擴(kuò)展名是否匹配(如
.txt與.csv的區(qū)別) - 使用
os.path.exists()函數(shù)驗(yàn)證路徑是否存在:
import os
print(os.path.exists("your_file_path")) # 返回True則路徑有效2.理解工作目錄與相對(duì)路徑
- 執(zhí)行腳本時(shí),系統(tǒng)以當(dāng)前工作目錄為相對(duì)路徑起點(diǎn),而非腳本所在目錄3
- 通過
os.getcwd()獲取當(dāng)前工作目錄,若與預(yù)期不符: - 在IDE(如VSCode)中設(shè)置工作目錄(調(diào)試配置項(xiàng))
- 使用
os.chdir()動(dòng)態(tài)修改工作目錄
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python成功解決讀文件出現(xiàn):IOError:?[Errno?0]?Error的錯(cuò)誤
- Python報(bào)錯(cuò):OSError:?[Errno?22]?Invalid?argument解決方案及應(yīng)用實(shí)例
- 解決python訓(xùn)練模型報(bào)錯(cuò):BrokenPipeError:?[Errno?32]?Broken?pipe
- 解決Python獲取文件提示找不到指定路徑can‘t?open?file?'area.py':[Errno?2]?No?such?file?or?directory
- 解決Python保存文件名太長OSError: [Errno 36] File name too lon
- python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法
相關(guān)文章
Pandas過濾dataframe中包含特定字符串的數(shù)據(jù)方法
今天小編就為大家分享一篇Pandas過濾dataframe中包含特定字符串的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
在PyCharm中找不到Conda創(chuàng)建的環(huán)境的解決方法
本文主要介紹了在PyCharm中找不到Conda創(chuàng)建的環(huán)境的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Python使用matplotlib填充圖形指定區(qū)域代碼示例
這篇文章主要介紹了Python使用matplotlib填充圖形指定區(qū)域代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
用pywin32實(shí)現(xiàn)windows模擬鼠標(biāo)及鍵盤動(dòng)作
這篇文章主要介紹了用pywin32實(shí)現(xiàn)windows模擬鼠標(biāo)及鍵盤動(dòng)作的示例,需要的朋友可以參考下2014-04-04
使用python對(duì)文件中的單詞進(jìn)行提取的方法示例
這篇文章主要介紹了使用python對(duì)文件中的單詞進(jìn)行提取的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
詳解python實(shí)現(xiàn)簡單區(qū)塊鏈結(jié)構(gòu)
區(qū)塊鏈?zhǔn)且环N數(shù)據(jù)結(jié)構(gòu),也是一個(gè)分布式數(shù)據(jù)庫。這篇文章主要介紹了python實(shí)現(xiàn)簡單區(qū)塊鏈結(jié)構(gòu)的相關(guān)知識(shí),需要的朋友可以參考下2021-04-04
Python實(shí)現(xiàn)模擬錕斤拷等各類亂碼詳解
說到亂碼問題就不得不提到錕斤拷,這算是非常常見的一種亂碼形式,那么它到底是經(jīng)過何種錯(cuò)誤操作產(chǎn)生的呢?本文我們就來一步步探究2023-02-02

