python文件读取和导包的绝对路径、相对路径详解
目录
- 一、文件读取的绝对路径和相对路径
- 二、package的绝对路径及相对路径导入
- 2.1 导包以绝对路径导入
- 2.2 导包以相对路径导入
- 三、运行脚本的当前工作路径和绝对路径
- 总结
文章图片
一、文件读取的绝对路径和相对路径 用相对路径和绝对路径读取上一层目录的文件、下一层目录的文件及读取同层级的文件。
# @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.txtwith open("test1.txt", 'r') as f:print(f.read())# 读取上一层目录的test.txt文件with open("../test.txt", 'r') as f:print(f.read())
【python文件读取和导包的绝对路径、相对路径详解】..表示进入上一层目录。
若在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.pyfrom 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.pyfrom .cite_f import f"""在上一层目录里的platform1.py调用myprocessor.py"""# @File : platform1.py.pyfrom myprocessor.myprocessor import *
"""在myprocessor.py内导入同等级目录的cite_f及上层目录的platform1.py"""# @File : myprocessor.py.pyfrom .cite_f import ffrom ..platform1 import *"""在上上一层目录里的main.py调用myprocessor.py"""# @File : main.py.pyfrom testa.platform.myprocessor.myprocessor import *
参考引用:python的包相关的知识
模块:一组功能的组合,任何以
.py
结尾的都可以称作模块包块的组合,py2要求必须有
__init__.py
,py3不需要三、运行脚本的当前工作路径和绝对路径 脚本所在位置的目录为当前工作路径,无论后续调用哪个模块(子目录模块、父目录模块),当前工作路径不会变
os.getcwd()
,但在哪个模块写os.path.abspath(__file__)
就会打印那个模块所在的工作目录。# @File : myprocessor.py.pyimport osprint("当前工作路径:",os.getcwd())print("绝对路径:",os.path.abspath(__file__))# @File : platform1.py.pyfrom myprocessor.myprocessor import *
运行脚本
platform1.py
会显示当前工作路径: C:\Users\PycharmProjects\pythonProject13\testa\platform
绝对路径: C:\Users\PycharmProjects\pythonProject13\testa\platform\myprocessor\myprocessor.py
在脚本中运行示例
文章图片
总结 到此这篇关于python文件读取和导包的绝对路径、相对路径的文章就介绍到这了,更多相关python文件读取和导包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Python|Python 网易易盾滑块验证功能的实现
- 一文搞懂python可迭代对象|一文搞懂python可迭代对象,迭代器,生成器,协程
- Mybatis里Mapper映射sql文件里insert的主键返回selectKey使用
- uni-app调用原生的文件系统管理器(可选取附件上传)
- android ANR traces.txt文件导出分析
- 丧心病狂的Android混淆文件生成器
- 69.查看APP沙盒缓存的内容文件
- Android读写properties配置文件
- Python|Python 什么是flask框架(快速入门)
- Android应用打开外部文件