时间:2022-10-14 10:24:48 | 栏目:Python代码 | 点击:次
文件目录层级
用相对路径和绝对路径读取上一层目录的文件、下一层目录的文件及读取同层级的文件。
# @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"即可。
绝对导入的格式为 import A.B
或 from A import B
,相对导入格式为 from . import B
或 from ..A import B
,.代表当前模块,..代表上层模块,...代表上上层模块,依次类推。
相对导入可以避免硬编码带来的维护问题,例如我们改了某一顶层包的名,那么其子包所有的导入就都不能用了。但是 存在相对导入语句的模块,不能直接运行,否则会有异常:
?相对路径运行注意事项:
在没有明确指定包结构的情况下,Python 是根据
如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块__name__
来决定一个模块在包中的结构的,如果是__main__
则它本身是顶层模块,没有包结构,如果是A.B.C 结构,那么顶层模块是 A。基本上遵循这样的原则:
如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块
# @File : platform1.py.py from testa.platform.myprocessor.myprocessor import * # 引用同级目录的模块 from a import * # 引用下一级目录的模块 from myprocessor.myprocessor import * # 引用上一级目录的模块 from testa.main import *
"""在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
在脚本中运行示例