如何解決Python:報(bào)錯(cuò)[Errno 2]No such file or directory問(wèn)題
Python報(bào)錯(cuò)[Errno 2]No such file or directory
問(wèn)題現(xiàn)象
Python文件讀取操作時(shí),系統(tǒng)無(wú)法找到指定路徑的文件或目錄。其核心原因可歸結(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)獲取腳本所在目錄(推薦)
通過(guò)__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
- 通過(guò)
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保存文件名太長(zhǎng)OSError: [Errno 36] File name too lon
- python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法
相關(guān)文章
基于Python采集爬取微信公眾號(hào)歷史數(shù)據(jù)
這篇文章主要介紹了基于Python采集爬取微信公眾號(hào)歷史數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
跟老齊學(xué)Python之關(guān)于循環(huán)的小伎倆
不管是while還是for,所發(fā)起的循環(huán),在python編程中是經(jīng)常被用到的。特別是for,一般認(rèn)為,它要比while快,而且也容易寫(是否容易,可能因人而異,但是,執(zhí)行時(shí)間快,是的確的),因此在實(shí)踐中,for用的比較多點(diǎn)。2014-10-10
Python hashlib庫(kù)數(shù)據(jù)安全加密必備指南
這篇文章主要為大家介紹了Python hashlib庫(kù)數(shù)據(jù)安全加密的使用實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python實(shí)現(xiàn)人工蜂群算法的示例代碼
ABC,即人工蜂群算法(Artificial?Bee?Colony?Algorithm),由Karaboga等人提出,這篇文章主要介紹了人工蜂群算法的概念與Python實(shí)現(xiàn),感興趣的可以了解一下2023-08-08
Python自動(dòng)化測(cè)試selenium指定截圖文件名方法
這篇文章主要介紹了Python自動(dòng)化測(cè)試selenium指定截圖文件名方法,Selenium?支持?Web?瀏覽器的自動(dòng)化,它提供一套測(cè)試函數(shù),用于支持?Web?自動(dòng)化測(cè)試,下文基于python實(shí)現(xiàn)指定截圖文件名方法,需要的小伙伴可以參考一下2022-05-05
詳細(xì)介紹pandas的DataFrame的append方法使用
這篇文章主要介紹了詳細(xì)介紹pandas的DataFrame的append方法使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
15個(gè)應(yīng)該掌握的Jupyter Notebook使用技巧(小結(jié))
這篇文章主要介紹了15個(gè)應(yīng)該掌握的Jupyter Notebook使用技巧(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Python實(shí)現(xiàn)模擬分割大文件及多線程處理的方法
這篇文章主要介紹了Python實(shí)現(xiàn)模擬分割大文件及多線程處理的方法,涉及Python文件讀取、分割及多線程相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例
這篇文章主要介紹了python腳本監(jiān)控logstash進(jìn)程并郵件告警實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04

