主要记录下os.path.join()的用法
目录结构如下
在readconfig.py中进行试验,如下
代码语言:javascript复制1. 使用os.path.realpath(__file__)获取文件所在目
import os
print(os.path.realpath(__file__))
运行结果:
代码语言:javascript复制E:Crawlercommonreadconfig.py 运行结果显示 “路径 文件名”
代码语言:javascript复制2. os.path.split(path),将path分割成目录和文件名二元组返
在上一步的基础上运用split方法
1. print(os.path.split(os.path.realpath(__file__)))
或者直接使用绝对路径看的更清楚些
2. print(os.path.split('E:Crawlercommon\readconfig.py'))
那么如果只取目录的话,如下
3. print(os.path.split(os.path.realpath(__file__))[0])
运行结果:
代码语言:javascript复制1、2的结果 ('E:\Crawler\common', 'readconfig.py')
3的结果 E:Crawlercommon
代码语言:javascript复制3. os.path.abspath('.'), 获取当前文件所在路
print(os.path.abspath('.'))
运行结果:
E:Crawlercommon
代码语言:javascript复制4. os.path.dirname(path),返回path的目录
1. print(os.path.dirname('E:Crawlercommon\readconfig.py'))
结果:E:Crawlercommon
2. print(os.path.dirname('E:Crawlercommon'))
结果:E:Crawler
所以 os.path.dirname(os.path.abspath('.')) 表示获取当前文件所在目录的上一级目录,即项目所在目录E:Crawler
结果:E:Crawler
5. os.path.join(), 用于路径拼接
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
所谓第一个绝对路径,是从“尾部向头部读,
所得到的第一个绝对路径”,以 “” 为标识
代码语言:javascript复制print(os.path.join('E:Crawler', "config.ini"))
结果:E:Crawlerconfig.ini
print(os.path.join('E:Crawler', 'D:\aa', "config.ini"))
结果:D:aaconfig.ini
print(os.path.join('/home/mnt','/home/mnt/attach','/home/a/b/c'))
结果:/home/a/b/c
print(os.path.join('/local', '\aa', "/config.ini"))
结果:/config.ini
实例:在Python中如何使用相对目录
例子1:
假如工程文件的目录结构如下
main中存放的是整个程序的运行文件
test_case存放的是所有的测试用例
那么在run_report.py中需要指明测试用例所在的位置,需要用到os模块
代码语言:javascript复制os.path.abspath 表示 获得文件当前路径
os.path.dirname 表示 获得文件的父目录
可以按照如下方式
代码语言:javascript复制import os
root_dir = os.path.dirname(os.path.abspath('.')) # 获取当前文件(这里是指run_report.py)所在目录的父目录的绝对路径,也就是项目所在路径E:DDT_Interface
case_dir = root_dir '/test_case/' # 根据项目所在路径,找到用例所在的相对项目的路径
print(root_dir)
print(case_dir)
执行结果如下
代码语言:javascript复制D:worksoftpython36python.exe E:/DDT_Interface/main/run_report.py
E:DDT_Interface
E:DDT_Interface/test_case/
Process finished with exit code 0
例子2:
如果运行主文件直接在工程文件下,
没有一个单独的目录了(因为只有一个文件,没必要再单独创建一个目录)
run_all_case.py中关于读取用例的写法如下,
只需用os.path.abspath('.')来获取当前文件所在的路径即可,
再根据当前文件路径定位用例的路径
代码语言:javascript复制import os
root_dir = os.path.abspath('.') # 获取当前文件所在目录,也就是"审批系统"所在目录,即"E:shenpi审批系统"
case_path = root_dir "/test_case" # 获取case所在目录,即"E:shenpi审批系统test_case"
print(case_path)
执行结果如下
代码语言:javascript复制D:worksoftpython36python.exe E:/shenpi/审批系统/run_all_case.py
E:shenpi审批系统/test_case
Process finished with exit code 0