日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python文件讀取和導包的絕對路徑、相對路徑詳解_python

作者:hellobigorange ? 更新時間: 2022-06-24 編程語言

文件目錄層級

一、文件讀取的絕對路徑和相對路徑

用相對路徑和絕對路徑讀取上一層目錄的文件、下一層目錄的文件及讀取同層級的文件。

# @File : platform.py.py

"""1、絕對路徑讀取文件"""
with open(r"C:\Users\chengjingd\PycharmProjects\pythonProject13\testa\platform\myprocessor\test2.txt", 'r') as f:
    print(f.read())
    
"""2、相對路徑讀取文件"""
# 讀取下一層目錄的test2.txt文件
with open("myprocessor/test2.txt", 'r') as f:
    print(f.read())

# 讀取同層目錄的test1.txt
with open("test1.txt", 'r') as f:
    print(f.read())

# 讀取上一層目錄的test.txt文件
with open("../test.txt", 'r') as f:
    print(f.read())

..表示進入上一層目錄。
若在cite_f.py里讀取 test.txt即上上層目錄,只要將路徑替換為"../../test2.txt"即可。

二、package的絕對路徑及相對路徑導入

絕對導入的格式為 import A.Bfrom A import B,相對導入格式為 from . import Bfrom ..A import B,.代表當前模塊,..代表上層模塊,...代表上上層模塊,依次類推。

相對導入可以避免硬編碼帶來的維護問題,例如我們改了某一頂層包的名,那么其子包所有的導入就都不能用了。但是 存在相對導入語句的模塊,不能直接運行,否則會有異常:

??相對路徑運行注意事項:

在沒有明確指定包結構的情況下,Python 是根據 __name__ 來決定一個模塊在包中的結構的,如果是 __main__ 則它本身是頂層模塊,沒有包結構,如果是A.B.C 結構,那么頂層模塊是 A。基本上遵循這樣的原則:

如果是絕對導入,一個模塊只能導入自身的子模塊或和它的頂層模塊同級別的模塊及其子模塊
如果是相對導入,一個模塊必須有包結構且只能導入它的頂層模塊內部的模塊

2.1 導包以絕對路徑導入

# @File : platform1.py.py
from testa.platform.myprocessor.myprocessor import *
# 引用同級目錄的模塊
from a import *
# 引用下一級目錄的模塊
from myprocessor.myprocessor import *
# 引用上一級目錄的模塊
from testa.main import *

2.2 導包以相對路徑導入

"""在myprocessor.py內導入同等級目錄的cite_f"""
# @File : myprocessor.py.py
from .cite_f import f
"""在上一層目錄里的platform1.py調用myprocessor.py"""
# @File : platform1.py.py
from myprocessor.myprocessor import *
"""在myprocessor.py內導入同等級目錄的cite_f及上層目錄的platform1.py"""
# @File : myprocessor.py.py
from .cite_f import f
from ..platform1 import *
"""在上上一層目錄里的main.py調用myprocessor.py"""
# @File : main.py.py
from testa.platform.myprocessor.myprocessor import *

參考引用:python的包相關的知識

模塊:一組功能的組合,任何以.py結尾的都可以稱作模塊

包塊的組合,py2要求必須有__init__.py,py3不需要

三、運行腳本的當前工作路徑和絕對路徑

腳本所在位置的目錄為當前工作路徑,無論后續調用哪個模塊(子目錄模塊、父目錄模塊),當前工作路徑不會變os.getcwd(),但在哪個模塊寫os.path.abspath(__file__)就會打印那個模塊所在的工作目錄。

# @File : myprocessor.py.py
import os
print("當前工作路徑:",os.getcwd())
print("絕對路徑:",os.path.abspath(__file__))
# @File : platform1.py.py
from myprocessor.myprocessor import *

運行腳本platform1.py會顯示

當前工作路徑: C:\Users\PycharmProjects\pythonProject13\testa\platform
絕對路徑: C:\Users\PycharmProjects\pythonProject13\testa\platform\myprocessor\myprocessor.py
在腳本中運行示例

總結?

原文鏈接:https://blog.csdn.net/qq_34229228/article/details/124381490

欄目分類
最近更新