亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python 解決相對(duì)路徑問(wèn)題:"No such file or directory"

 更新時(shí)間:2020年06月05日 09:09:02   作者:掙扎的藍(lán)藻  
這篇文章主要介紹了Python 解決相對(duì)路徑問(wèn)題:"No such file or directory"具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

如果你取相對(duì)路徑不是在主文件里,可能就會(huì)有相對(duì)路徑問(wèn)題:"No such file or directory"。

因?yàn)?python 的相對(duì)路徑,相對(duì)的都是主文件。

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

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

main.py 是主文件。

conf.py 里引用 config.txt 用相對(duì)路徑。

如果用 . 或 … 相對(duì)的是 main.py,所以用 "./config.txt",相對(duì)于 main.py 是同一個(gè)目錄下。

.指當(dāng)前文件所在的文件夾,… 指當(dāng)前文件的上一級(jí)目錄。

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

問(wèn)題分析:

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

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

import os
print("當(dāng)前路徑 -> %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é)果如下:

當(dāng)前路徑 -> E:\程序\python代碼\PythonDataAnalysis\Demo\test

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

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

from test import first

first.read_file()

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

當(dāng)前路徑 -> E:\程序\python代碼\PythonDataAnalysis\Demo

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

first.read_file()

File "E:\程序\python代碼\PythonDataAnalysis\Demo\test\first.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ù)輸出的當(dāng)前路徑會(huì)發(fā)現(xiàn),當(dāng)前路徑是 XXX/Demo,而不是上一次單獨(dú)執(zhí)行first.py 文件時(shí)的 XXX/Demo/test了,所以程序報(bào)錯(cuò)文件不存在的根本原因是因?yàn)楫?dāng)前路徑變了,導(dǎo)致代碼中的由相對(duì)路徑構(gòu)成的絕對(duì)路徑發(fā)生了變化。

解決方法:

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

import os
print("當(dāng)前路徑 -> %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é)果如下:

當(dāng)前路徑 -> E:\程序\python代碼\PythonDataAnalysis\Demo\test

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

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

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

當(dāng)前路徑 -> E:\程序\python代碼\PythonDataAnalysis\Demo

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

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

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

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

以上這篇Python 解決相對(duì)路徑問(wèn)題:"No such file or directory"就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django auth 應(yīng)用模塊詳解

    Django auth 應(yīng)用模塊詳解

    這篇文章主要介紹了Django auth 應(yīng)用模塊,auth 模塊幫助開(kāi)發(fā)人員提高了工作效率,因?yàn)槊總€(gè) Web 站點(diǎn)的權(quán)限管理模塊或者用戶管理模塊基本都是相同的邏輯,Django 的 auth 模塊使開(kāi)發(fā)者們不必在為一些重復(fù)性的邏輯進(jìn)行構(gòu)建,需要的朋友可以參考下
    2022-11-11
  • 使用python找出list列表中相同元素(指定元素)的所有索引

    使用python找出list列表中相同元素(指定元素)的所有索引

    這篇文章主要給大家介紹了關(guān)于使用python找出list列表中相同元素(指定元素)的所有索引,在平時(shí)開(kāi)發(fā)過(guò)程中經(jīng)常遇到需要在數(shù)據(jù)中獲取特定的元素索引的信息,需要的朋友可以參考下
    2023-08-08
  • Python教程之全局變量用法

    Python教程之全局變量用法

    這篇文章主要介紹了Python教程之全局變量用法,結(jié)合實(shí)例形式分析了Python全局變量的定義、修改等使用方法及注意事項(xiàng),需要的朋友可以參考下
    2016-06-06
  • python數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的遍歷實(shí)例

    python數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的遍歷實(shí)例

    這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之二叉樹(shù)的遞歸遍歷實(shí)例,需要的朋友可以參考下
    2014-04-04
  • PyAV?基礎(chǔ)及使用方法分享

    PyAV?基礎(chǔ)及使用方法分享

    這篇文章主要介紹了PyAV?基礎(chǔ)及使用方法分享的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • 關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問(wèn)題

    關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問(wèn)題

    這篇文章主要介紹了關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • python中@contextmanager裝飾器的用法詳解

    python中@contextmanager裝飾器的用法詳解

    這篇文章主要介紹了python中@contextmanager裝飾器的用法詳解,@contextmanager 的作用就是我們可以把一個(gè)非自定義類(lèi)改成一個(gè)上下文管理器,需要的朋友可以參考下
    2023-07-07
  • Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5信號(hào)與槽的連接

    Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5信號(hào)與槽的連接

    本文講解信號(hào)與槽的連接機(jī)制,詳細(xì)示范各種類(lèi)型的信號(hào)/槽連接的實(shí)現(xiàn)方法,這是圖形用戶界面的核心內(nèi)容。還將介紹面向?qū)ο蟮某绦蛟O(shè)計(jì),這是圖形用戶界面的基本思想
    2021-10-10
  • pandas如何快速去除列名中的特殊符號(hào)

    pandas如何快速去除列名中的特殊符號(hào)

    在使用Pandas處理數(shù)據(jù)時(shí),經(jīng)常需要處理數(shù)據(jù)中的列名column name,有時(shí)候,列名可能包含特殊字符,比如空格、點(diǎn)號(hào)、括號(hào)等,這些特殊字符可能會(huì)導(dǎo)致下一步的代碼出錯(cuò),因此需要將這些特殊字符從列名中刪除,下面先介紹pandas如何去除列名中的特殊符號(hào),感興趣的朋友一起看看吧
    2024-01-01
  • 手把手教你進(jìn)行Python虛擬環(huán)境配置教程

    手把手教你進(jìn)行Python虛擬環(huán)境配置教程

    這篇文章主要介紹了手把手教你進(jìn)行Python虛擬環(huán)境配置,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧,需要的朋友可以參考下
    2020-02-02

最新評(píng)論