中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python多模塊引用由此引發的相對路徑混亂問題怎么解決

發布時間:2023-03-09 15:56:55 來源:億速云 閱讀:168 作者:iii 欄目:開發技術

這篇文章主要介紹“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())

    運行效果

    Python多模塊引用由此引發的相對路徑混亂問題怎么解決

    特點

    • 不到 10 行代碼

    • 無第三方庫依賴

    • 使用簡單, 只需把原先寫死的相對路徑, 替換為 relpath({之前寫的路徑}) 即可

    • 此外, Pycharm 還能夠識別到文件參數, 在你鍵入時自動給出路徑提示

    Python多模塊引用由此引發的相對路徑混亂問題怎么解決

    更復雜的情況演示

    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多模塊引用由此引發的相對路徑混亂問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    油尖旺区| 娱乐| 沧州市| 蒙山县| 东阿县| 永新县| 连江县| 张北县| 大邑县| 阳山县| 开化县| 黔西县| 昌平区| 柘城县| 灵寿县| 寿宁县| 赫章县| 通道| 池州市| 永顺县| 麻栗坡县| 嵊州市| 绍兴市| 长兴县| 衢州市| 廊坊市| 辽阳县| 泗洪县| 营口市| 循化| 潜江市| 巫山县| 河南省| 阜宁县| 扎兰屯市| 景东| 凭祥市| 新巴尔虎右旗| 格尔木市| 南丰县| 白河县|