欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python文件讀取和導(dǎo)包的絕對(duì)路徑、相對(duì)路徑詳解

 更新時(shí)間:2022年04月26日 10:00:27   作者:hellobigorange  
每次在讀或?qū)懳募r(shí),獲取腳本文件的絕對(duì)路徑和相對(duì)路徑時(shí)很容易搞混,下面這篇文章主要給大家介紹了關(guān)于python文件讀取和導(dǎo)包的絕對(duì)路徑、相對(duì)路徑的相關(guān)資料,需要的朋友可以參考下

文件目錄層級(jí)

一、文件讀取的絕對(duì)路徑和相對(duì)路徑

用相對(duì)路徑和絕對(duì)路徑讀取上一層目錄的文件、下一層目錄的文件及讀取同層級(jí)的文件。

# @File : platform.py.py

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

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

二、package的絕對(duì)路徑及相對(duì)路徑導(dǎo)入

絕對(duì)導(dǎo)入的格式為 import A.Bfrom A import B,相對(duì)導(dǎo)入格式為 from . import Bfrom ..A import B,.代表當(dāng)前模塊,..代表上層模塊,...代表上上層模塊,依次類(lèi)推。

相對(duì)導(dǎo)入可以避免硬編碼帶來(lái)的維護(hù)問(wèn)題,例如我們改了某一頂層包的名,那么其子包所有的導(dǎo)入就都不能用了。但是 存在相對(duì)導(dǎo)入語(yǔ)句的模塊,不能直接運(yùn)行,否則會(huì)有異常:

??相對(duì)路徑運(yùn)行注意事項(xiàng):

在沒(méi)有明確指定包結(jié)構(gòu)的情況下,Python 是根據(jù) __name__ 來(lái)決定一個(gè)模塊在包中的結(jié)構(gòu)的,如果是 __main__ 則它本身是頂層模塊,沒(méi)有包結(jié)構(gòu),如果是A.B.C 結(jié)構(gòu),那么頂層模塊是 A?;旧献裱@樣的原則:

如果是絕對(duì)導(dǎo)入,一個(gè)模塊只能導(dǎo)入自身的子模塊或和它的頂層模塊同級(jí)別的模塊及其子模塊
如果是相對(duì)導(dǎo)入,一個(gè)模塊必須有包結(jié)構(gòu)且只能導(dǎo)入它的頂層模塊內(nèi)部的模塊

2.1 導(dǎo)包以絕對(duì)路徑導(dǎo)入

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

2.2 導(dǎo)包以相對(duì)路徑導(dǎo)入

"""在myprocessor.py內(nèi)導(dǎo)入同等級(jí)目錄的cite_f"""
# @File : myprocessor.py.py
from .cite_f import f
"""在上一層目錄里的platform1.py調(diào)用myprocessor.py"""
# @File : platform1.py.py
from myprocessor.myprocessor import *
"""在myprocessor.py內(nèi)導(dǎo)入同等級(jí)目錄的cite_f及上層目錄的platform1.py"""
# @File : myprocessor.py.py
from .cite_f import f
from ..platform1 import *
"""在上上一層目錄里的main.py調(diào)用myprocessor.py"""
# @File : main.py.py
from testa.platform.myprocessor.myprocessor import *

參考引用:python的包相關(guān)的知識(shí)

模塊:一組功能的組合,任何以.py結(jié)尾的都可以稱(chēng)作模塊

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

三、運(yùn)行腳本的當(dāng)前工作路徑和絕對(duì)路徑

腳本所在位置的目錄為當(dāng)前工作路徑,無(wú)論后續(xù)調(diào)用哪個(gè)模塊(子目錄模塊、父目錄模塊),當(dāng)前工作路徑不會(huì)變os.getcwd(),但在哪個(gè)模塊寫(xiě)os.path.abspath(__file__)就會(huì)打印那個(gè)模塊所在的工作目錄。

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

運(yùn)行腳本platform1.py會(huì)顯示

當(dāng)前工作路徑: C:\Users\PycharmProjects\pythonProject13\testa\platform
絕對(duì)路徑: C:\Users\PycharmProjects\pythonProject13\testa\platform\myprocessor\myprocessor.py
在腳本中運(yùn)行示例

總結(jié) 

到此這篇關(guān)于python文件讀取和導(dǎo)包的絕對(duì)路徑、相對(duì)路徑的文章就介紹到這了,更多相關(guān)python文件讀取和導(dǎo)包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 5種Python單例模式的實(shí)現(xiàn)方式

    5種Python單例模式的實(shí)現(xiàn)方式

    這篇文章主要為大家介紹了5種Python單例模式的實(shí)現(xiàn)方式,所謂單例,是指一個(gè)類(lèi)的實(shí)例從始至終只能被創(chuàng)建一次,對(duì)單例感興趣的小伙伴們可以參考一下
    2016-01-01
  • Python中l(wèi)ogging模塊的用法實(shí)例

    Python中l(wèi)ogging模塊的用法實(shí)例

    這篇文章主要介紹了Python中l(wèi)ogging模塊的用法實(shí)例,以實(shí)例形式介紹了日志模塊logging的用法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • Python安裝Scrapy庫(kù)的常見(jiàn)報(bào)錯(cuò)解決

    Python安裝Scrapy庫(kù)的常見(jiàn)報(bào)錯(cuò)解決

    本文主要介紹了Python安裝Scrapy庫(kù)的常見(jiàn)報(bào)錯(cuò)解決,文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • pycharm 批量修改變量名稱(chēng)的方法

    pycharm 批量修改變量名稱(chēng)的方法

    這篇文章主要介紹了pycharm 批量修改變量名稱(chēng)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python中__str__()的妙用

    Python中__str__()的妙用

    本文主要介紹了Python中__str__()的妙用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • python中字符串?dāng)?shù)組逆序排列方法總結(jié)

    python中字符串?dāng)?shù)組逆序排列方法總結(jié)

    在本篇文章里小編給大家整理了關(guān)于python中字符串?dāng)?shù)組如何逆序排列的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-06-06
  • python字典添加值的方法及實(shí)例代碼分享

    python字典添加值的方法及實(shí)例代碼分享

    在本篇文章里小編給大家整理的是一篇關(guān)于python字典添加值的方法及實(shí)例代碼講解,有興趣的朋友們可以學(xué)習(xí)下。
    2022-11-11
  • python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼)

    python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼)

    這篇文章主要介紹了python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼),需要的朋友可以參考下
    2020-02-02
  • Python考拉茲猜想輸出序列代碼實(shí)踐

    Python考拉茲猜想輸出序列代碼實(shí)踐

    這篇文章主要介紹了Python考拉茲猜想輸出序列代碼實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python裝飾器有哪些絕妙的用法

    Python裝飾器有哪些絕妙的用法

    本文主要介紹了Python裝飾器有哪些絕妙的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論