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

例子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. Intellij IDEA搭建vue-cli项目

    1.安装/升级node环境 vue-cli对于node和npm的版本是有要求的.     可以通过 node -v (npm -v)查看当前版本,通过 where node (where npm)查看 ...

  2. 一个简单的购物金额结算(JAVA)

    我编写的代码: import java.util.Scanner; public class ZuoYe01 { public static void main(String[] args) { // ...

  3. 锁(lock)和闩(latch)

    开发多用户.数据库驱动的应用时,最大的难点之一是:一方面要力争取得最大限度的并发访问,与此同时还要确保每个用户能以一致的方式读取和修改数据.为此就有了锁定(locking)机制,这也是所有数据库都具有 ...

  4. [c/c++] programming之路(4)、常量和变量

    一.打开多个程序(温习) #include<stdio.h> #include<stdlib.h> void main(){ ; ]; scanf("%d" ...

  5. day 26 元类

    一.isinstance issubclass class Person: passclass Student(Person): passstu1=Student()#判断是不是实例print(isi ...

  6. 排它平方数|2013年蓝桥杯A组题解析第二题-fishers

    排它平方数 小明正看着 203879 这个数字发呆. 原来,203879 * 203879 = 41566646641 这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是 ...

  7. hexo在github和coding.net部署并分流(一)

    安装GIT和Node.JS 首先在自己的电脑上安装好git和node.js,这一步怎么做自己搜索,安装软件都是下一步下一步,应该不难,GIT安装完成后打开git cmd输入 git config -- ...

  8. Hive command

    hive常用命令 Hadoop Hive概念学习系列之hive里的分区(九) DOC hive分区(partition)简介 Hive分区(静态分区+动态分区) Hive分区.分桶操作及其比较 hiv ...

  9. 用spring tool suite插件创建spring boot项目时报An internal error occurred during: "Building UI model". com/google/common/

    本文为博主原创,未经允许不得转载 在用spring tool suite创建spring boot项目时,报一下异常: 查阅很多资料之后发现是因为装的spring tool suite的版本与ecli ...

  10. 【转载】SeleniumIDE入门

    http://www.open-open.com/lib/view/open1452488109558.html