模块与包
1. 导入模块与包
1.1 import语法
import xxx 模块名
# import 语句无法加载到模块下面的变量名,他只能加载到模块名
# # import 只能导入模块名
# 此时我在src包下的login_register.py模块中,我想引用add_bank模块内的方法
import add_bank
# 引用add_bank里的方法,需要加上模块名
print(add_bank.name)
import add_bank 这句话会发生那些事?
# 【1】import add_bank :先进入到 add_bank 模块里面
# 【2】加载 add_bank 模块里面的名称空间
# 【3】回到自己的文件 login 中 , 向下继续加载自己的名称空间
# 【4】login模块里面的名称空间 ---> add_bank 模块里面 + login模块里面的名称空间
print(sys.modules)
1.2 from xx import xx语法
from ... import ..
# 语句可以将 需要导入模块里面的指定变量名加载进来
# 此时我在src包下的login_register.py模块中,我想引用utils包中的Decorator的模块内的方法
from ATM.utils.Decorator import *
# * 代表模块中所有方法
# 也可以具体写某个方法名称
1.3 循环导入
- 循环导入问题指的是在一个模块加载/导入的过程中导入另外一个模块
- 而在另外一个模块中又返回来导入第一个模块中的名字
- 由于第一个模块尚未加载完毕
- 所以引用失败、抛出异常
- 究其根源就是在python中
- 同一个模块只会在第一次导入时执行其内部代码
- 再次导入该模块时
- 即便是该模块尚未完全加载完毕也不会去重复执行内部代码
1.3.1 循环引入产生的问题的解决方案
- 方案一
- 导入语句放到最后,保证在导入时,所有名字都已经加载过
- 方案二
- 导入语句放到函数中,只有在调用函数时才会执行其内部代码
2. 相对路径和绝对路径
-
绝对路径:
-
绝对路径是从文件系统的根目录(或其他参考点)开始的完整路径
-
用绝对路径时,你指定的路径是从文件系统的根目录开始的
-
示例(在 Unix/Linux 系统中):
/home/user/documents/file.txt
-
示例(在 Windows 系统中):
C:\Users\User\Documents\file.txt
-
-
相对路径:
- 相对路径是相对于当前工作目录或其他相对位置的路径
- 使用相对路径时,你指定的路径是相对于执行脚本的当前工作目录的。
- 示例:
../parent_directory/file.txt
- .代表同层目录 ..代表父级目录
3. os模块导读
3.1 什么是os模块
os
模块是 Python 标准库中的一个核心模块,提供了与操作系统交互的功能。它包含许多与文件系统、进程控制、环境变量等相关的函数
3.2 常用模块函数
# 路径操作
# 获取当前文件所在文件夹的路径,当前文件的上层路径
# os.path.dirname(__file__)
# /Users/chenxu/Documents/pythonProjects28/ATM
BASE_DIR = os.path.dirname(__file__)
# 获取当前文件的绝对路径
# os.path.abspath(path)
# /Users/chenxu/Documents/pythonProjects28/ATM/setting.py
abspath= os.path.abspath(__file__)
# 拼接路径
# os.path.join()
# /Users/chenxu/DocumentythonProjects28/ATM/database/pwd
PWD_DIR = os.path.join(DB_DIR, 'pwd')
# 判断当前路径是否存在
# os.path.exists(path)
exists = os.path.exists(p1)
# 创建文件夹
# 单层文件夹
os.mkdir(path)
# 多层文件夹
os.makedirs(path)
标签:add,导入,模块,import,path,os
From: https://www.cnblogs.com/Formerly/p/17902014.html