python模組呼叫時,相對路徑問題

2021-08-11 11:01:03 字數 1072 閱讀 4220

事情的起因是最近編寫乙個模組,其中涉及到多個模組呼叫問題,而**中全為相對路徑(使用絕對路徑的很少吧),於是引起了一連串『』靈異事件『』——明明被呼叫模組可以正常執行,呼叫模組為啥就提示找不到檔案?最坑人的是,筆者使用了

configparser

模組,這貨在檔案路徑不存在時居然沒報錯,而是返回空!開始以為**邏輯有問題,檢查了一圈才發現是路徑問題(好吧,技術有點渣),廢話不多說,上**!

圖為基本目錄結構(練習用的),最外層的呼叫時main.py,最底層被呼叫的是name.py和123.txt

call.py呼叫name.py和123.txt:

呼叫成功!

使用main.py呼叫call.py:

結果:

檔案123.txt不見了?

是的,坑就在這,相對路徑其實指的是相對於最上層呼叫的模組,比如此處的main.py,相對於main.py來說,『txt\\123.txt』路徑是不存在的,所以會引發異常(雖然該路徑相對call.py是正確的),而python本身的模組呼叫『from settings import name』卻是不受影響的——因為__init__.py。

修改錯誤:

將txt目錄轉移至main.py同目錄下(即相對於main.py來說『txt\\123.txt』合法)即可!

當然此時,call.py模組執行就會報錯,但是不影響最頂層main.py的結果!

雖然道理很簡單,但是對於初學者來說還是很容易犯錯的,謹記!

python 使用相對路徑import 模組的方法

python 包含子目錄中的模組方法比較簡單,關鍵是能夠在sys.path裡面找到通向模組檔案的路徑。下面將具體介紹幾種常用情況 1 主程式與模組程式在同一目錄下 如下面程式結構 src mod1.py test1.py 若在程式test1.py中匯入模組mod1,則直接使用 import mod1...

python檔案路徑 相對路徑

檢視程式的工作路徑import os print os.getcwd 將工作路徑修改為當前程式所在路徑os.chdir d python python入門到實踐 10檔案和異常 檔案路徑 print os.getcwd 注意路徑是雙斜線 同級目錄 直接呼叫檔名with open pi.txt as ...

路徑詳解 絕對路徑,相對路徑,根相對路徑

路徑詳解 重點 1 絕對路徑 1 什麼是絕對路徑 檔案從最高端目錄下開始的完整路徑 1 訪問網路資源 1 由以下四個部分組成 1 協議名稱 2 主機名 ip位址,網域名稱 3 目錄路徑 4 檔名 ex 1 協議名 2 主機名 網域名稱 3 目錄路徑 img4 檔名 bd logo1.png 2 訪問...