python模組調用時,相對路徑問題

來源:互聯網
上載者:User

        事情的起因是最近編寫一個模組,其中涉及到多個模組調用問題,而代碼中全為相對路徑(使用絕對路徑的很少吧),於是引起了一連串‘’靈異事件‘’——明明被調用模組可以正常執行,調用模組為啥就提示找不到檔案。最坑人的是,筆者使用了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的結果。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.