一般在代码中涉及到操作文件时,最好使用文件的相对目录,这样在你的程序迁移到别人的电脑时,可以保证不会出现文件读取异常的错误(另外,自动化测试时用例的读取也要用相对目录)

例子1

假如工程文件的目录结构如下

main中存放的是整个程序的运行文件

test_case存放的是所有的测试用例

那么在run_report.py中需要指明测试用例所在的位置,需要用到os模块

os.path.abspath 表示 获得文件当前路径
os.path.dirname 表示 获得文件的父目录

可以按照如下方式

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)

执行结果如下

D:\worksoft\python36\python.exe E:/DDT_Interface/main/run_report.py
E:\DDT_Interface
E:\DDT_Interface/test_case/ Process finished with exit code

例子2

如果运行主文件直接在工程文件下,没有一个单独的目录了(因为只有一个文件,没必要再单独创建一个目录)

run_all_case.py中关于读取用例的写法如下,只需用os.path.abspath('.')来获取当前文件所在的路径即可,再根据当前文件路径定位用例的路径

import os

root_dir = os.path.abspath('.')  # 获取当前文件所在目录,也就是"审批系统"所在目录,即"E:\shenpi\审批系统"
case_path = root_dir + "/test_case" # 获取case所在目录,即"E:\shenpi\审批系统\test_case"
print(case_path)

运行结果

D:\worksoft\python36\python.exe E:/shenpi/审批系统/run_all_case.py
E:\shenpi\审批系统/test_case Process finished with exit code

python相对目录的基本用法(一)的更多相关文章

  1. python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

  2. Python中 sys.argv[]的用法

    Python中 sys.argv[]的用法 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上 ...

  3. 31 Python中 sys.argv[]的用法简明解释(转)

    Python中 sys.argv[]的用法简明解释 因为是看书自学的python,开始后不久就遇到了这个引入的模块函数,且一直在IDLE上编辑了后运行,试图从结果发现它的用途,然而结果一直都是没结果, ...

  4. python爬虫---selenium库的用法

    python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...

  5. python列表与元组的用法

    python列表与元组的用法 目录: 列表的用法: 1.增   append   +    extend 2.删  del    remove 3.改   insert 4.查  index 5.反向 ...

  6. Python之目录结构

    Python之目录结构 项目名project_name project_name -|--bin (可执行文件) --|--start.py import os,sys #设置环境变量 BASE_DI ...

  7. Python中 sys.argv的用法简明解释

    Python中 sys.argv[]的用法简明解释 sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个“外部”很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得 ...

  8. Python内置OS模块用法详解

    大家好,从今天起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示.刚入门的读者千万不要错过! 很多人学习python,不知 ...

  9. Python正则式的基本用法

    Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...

随机推荐

  1. 复选框批量删除操作-jquery方式

    1.首先在页面添加一个批量删除的按钮:<li class="btns"><input id="deleteSubmit" class=&quo ...

  2. postman 带变量参数使用方法

    设置代码组变量后就可以在这个组内所有接口使用这些变量了,代码用的是js语法: 代码编写的快捷方法在这里: 然后就可以在接口中使用这些变量了,当然也可以直接在接口中写这些变量

  3. CentOS7搭建jdk

    背景 现在很多Linux系统在安装完成时就自带jdk,但是系统自带的jdk有时候并不符合我们的需求,这时候我们需要自己来安装jdk. 步骤 下载jdk,我下载的是64位的jdk-8u161-linux ...

  4. Oracle为表或字段添加备注

    comment on column TableName.ColumnName is ‘备注名’; comment on table TableName is '备注名';

  5. 集合03_Map

    Map集合总览 保存映射关系key-value键值对,键唯一,值可以重复,Map和Set的实现类相似 Entry是Map的内部类 Map接口中常用的方法: void clear() Set keySe ...

  6. P2257 YY的GCD(莫比乌斯反演)

    第一次做莫比乌斯反演,推式子真是快乐的很啊(棒读) 前置 若函数\(F(n)\)和\(f(d)\)存在以下关系 \[ F(n)=\sum_{n|d}f(d) \] 则可以推出 \[ f(n)=\sum ...

  7. (转) The care and maintenance of your adviser

    The care and maintenance of your adviser Ever since the advent of graduate school, students have com ...

  8. kubernetes 实战3_命令_Configure Pods and Containers

    Configure a Pod to Use a PersistentVolume for Storage how to configure a Pod to use a PersistentVolu ...

  9. ifconfig 输出里没有IP地址

    转载: http://blog.csdn.net/johnstrive/article/details/5625121 inet addr:....Bcast:.....Mask:255.255.25 ...

  10. 使用mod_deflate模块压缩页面优化传输速度

    在HTTPD主配置文件中添加如下,并确保deflate模块是启用的 #vim /etc/httpd/conf/httpd.conf SetOutputFilter DEFLATE//调用一个叫DEFL ...