您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python多模塊引用由此引發的相對路徑混亂問題怎么解決”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python多模塊引用由此引發的相對路徑混亂問題怎么解決”文章能幫助大家解決問題。
當不同層級的 Python 模塊相互調用時,我們會發現原本在一個模塊中寫死的相對路徑會導致找不到文件的報錯。
這種問題該怎么解決呢?
復制下面的代碼, 放到你的模塊內 (或者保存為一個 .py 文件), 調用 relpath
函數即可.
def relpath(file): """ Always locate to the correct relative path. """ from sys import _getframe from pathlib import Path frame = _getframe(1) curr_file = Path(frame.f_code.co_filename) return str(curr_file.parent.joinpath(file).resolve())
不到 10 行代碼
無第三方庫依賴
使用簡單, 只需把原先寫死的相對路徑, 替換為 relpath({之前寫的路徑}) 即可
此外, Pycharm 還能夠識別到文件參數, 在你鍵入時自動給出路徑提示
someprj |- relpath.py |- A |- a.py |- AA |- aa.py |- AAA |- aaa.py |- B |- b.txt
# A/a.py def show_path(): from relpath import relpath print(relpath('../B/b.txt')) if __name__ == '__main__': from A.AA import aa from A.AA.AAA import aaa show_path() # -> '/someprj/B/b.txt' aa.show_path() # -> '/someprj/B/b.txt' aaa.show_path() # -> '/someprj/B/b.txt' # A/AA/aa.py def show_path(): from relpath import relpath print(relpath('../../B/b.txt')) if __name__ == '__main__': from A import a from A.AA.AAA import aaa show_path() # -> '/someprj/B/b.txt' a.show_path() # -> '/someprj/B/b.txt' aaa.show_path() # -> '/someprj/B/b.txt' # A/AA/AAA/aaa.py def show_path(): from relpath import relpath print(relpath('../../../B/b.txt')) if __name__ == '__main__': from A import a from A.AA import aa show_path() # -> '/someprj/B/b.txt' a.show_path() # -> '/someprj/B/b.txt' aa.show_path() # -> '/someprj/B/b.txt'
關于“Python多模塊引用由此引發的相對路徑混亂問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。