網站首頁 編程語言 正文
文件目錄層級
一、文件讀取的絕對路徑和相對路徑
用相對路徑和絕對路徑讀取上一層目錄的文件、下一層目錄的文件及讀取同層級的文件。
# @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.B
或 from A import B
,相對導入格式為 from . import B
或 from ..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
相關推薦
- 2022-09-03 解決Python報錯問題[SSL:?SSLV3_ALERT_HANDSHAKE_FAILURE]_p
- 2023-04-24 一文帶你深入了解C++中音頻PCM數據_C 語言
- 2022-11-03 PyCharm利用pydevd-pycharm實現Python遠程調試的詳細過程_python
- 2023-07-07 Tomcat文件夾屬性
- 2022-03-06 Android中SurfaceFlinger工作原理_Android
- 2021-11-16 linux系統下用戶管理相關介紹_Linux
- 2023-04-02 GoLang調用鏈可視化go-callvis使用介紹_Golang
- 2022-01-21 有了 IP 地址,為什么還要用 MAC 地址?
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支