pathlib 路径处理
只写文件名字: 默认只会从当前的目录【当前py文件】里找,找不到报错。如果不在同一个目录,解决方案:
1、绝对路径: 默认在路径前面加r 转义。
- 但是不推荐使用: 绝对路径有绝对缺陷: 自动化框架肯定不会用绝对路径
- 1)换了电脑,路径不会完全一样 就会导致文件找不到;
- 2)跨平台兼容性很差: mac Linux – /., windows:
2、相对路径处理: 不管祖先是谁,相对于我【当前文件】你在哪个位置。 ==linux - 先获取我py文件的路径
- 找一下你跟我的位置关系 - -同级 上级 下级。。
- 通过关系确认我们的路径关联情况
借助一个工具 : 功能库 pathlib 处理路径 【参考 内置函数】
- 需要导入 :import pathlib
- Python的自带的一个库,所以直接导入只用 ,如果不是自带的库,第三库【excel requests selenium等】,需要安装。
- os : 老旧的技术,现在新版本官方推荐使用pathlib。
自动化框架-- 代码分层:
- 代码框架相对路径不会变,跟我的绝对路径没有关系。
- 测试用例层 : 用例里读取数据,读取配置文件
- 测试数据: 用例 文本
- 配置文件: 项目地址 数据库连接数据
- 测试报告和日志层
- 入口文件: run.py
# 绝对路径
# with open(r"D:\Pycharm_Project\python65_auto\day06_函数和文件处理\demo1",encoding="UTF8",mode="r") as f:
# data = f.read()
# print(data)
# 相对路径
import pathlib # 导入Python自带的功能库
#先获取我py文件的路径 -- 当前绝对路径
current_path = pathlib.Path(__file__).absolute()
print(current_path)
# 获取demo1- d3--day07--python65--day06--demo1
# 获取我的父级路径- 父级
print(current_path.parent) # day07目录
print(current_path.parent.parent) # python65目录
day06_path = current_path.parent.parent / "day06_函数和文件处理"
print(day06_path)
demo1_path = current_path.parent.parent / "day06_函数和文件处理" / "demo1"
print(demo1_path)
# 做文件读取 --路径处理之后读取文件内容
with open(demo1_path,encoding="UTF8",mode="r") as f:
data = f.read()
print(data)