Python 内置os模块的简单实用
获取路径&目录添加文件
在自动化测试的过程,考虑到工程文件的移动或者在其他人的工作环境中运行,所以我们的路径要灵活,不能把路径写死。
推荐使用Python的内置模块OS
参照图

import unittest
from common.HTMLTestRunner_cn import HTMLTestRunner
import os
# 当前脚本路径
curPath = os.path.realpath(__file__)
print(curPath)
# 当前脚本文件夹名称
proPath = os.path.dirname(curPath)
print(proPath)
#测试用例的路径
startCase = os.path.join(proPath, "test_case")
print(startCase)
# 测试报告的路径
reportPath = os.path.join(proPath, "report", "report.html")
print(reportPath)
路径的操作
#获取当前目录
print(os.getcwd())
print(os.path.abspath(os.path.dirname(__file__)))
#获取上级目录
print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
print(os.path.abspath(os.path.dirname(os.getcwd())))
print(os.path.abspath(os.path.join(os.getcwd(), "..")))
#获取上上级目录
print(os.path.abspath(os.path.join(os.getcwd(), "../..")))
获取最新文件
测试过程中我们会多次执行生成多次的测试报告,那么如何获取最新的测试报告呢?
案例图:
如图,report下有许多的测试报告

import os
# 当前脚本文件夹名称
proPath = os.path.dirname( os.path.realpath(__file__))
print(proPath) def get_newest_report(report_path):
#列举report_path目录下的所有文件(名),结果以列表形式返回
lists =os.listdir(report_path)
# sort按key的关键字进行升序排序,lambda的入参fn为lists列表的元素,获取文件的最后修改时间,所以最终以文件时间从小到大排序
# 最后对lists元素,按文件修改时间大小从小到大排序。
# 获取最新文件的绝对路径,列表中最后一个值,文件夹+文件名
#lists.sort(key=lambda fn: os.path.getmtime(os.path.join(report_path, fn))) #两种方法排序
lists.sort(key=lambda fn: os.path.getmtime(report_path+"\\"+fn)) #两种方法排序
print(u'最新测试生成的报告: '+lists[-1])
report_file = os.path.join(report_path, lists[-1])
return report_file if __name__ == "__main__":
report_path = os.path.join(proPath, "report") #报告所在目录(report_path)
report_file = get_newest_report(report_path) #返回report_path下最新的文件
os.path.getmtime与os.path.getctime的区别:
import os
import time
file = 'C:\\Users\Administrator\PycharmProjects\\unittest_lianxi'
print(os.path.getatime(file))# 输出最近访问时间
print(os.path.getctime(file))# 输出文件创建时间
print(os.path.getmtime(file))# 输出最近修改时间
print(time.gmtime(os.path.getmtime(file)))# 以struct_time形式输出最近修改时间
print(os.path.getsize(file)) # 输出文件大小(字节为单位)
print(os.path.abspath(file)) # 输出绝对路径
print(os.path.normpath(file) )
Python 内置os模块的简单实用的更多相关文章
- Python内置OS模块用法详解
大家好,从今天起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示.刚入门的读者千万不要错过! 很多人学习python,不知 ...
- Python内置标准模块
time 模块 1 >>> import time 2 >>> time.time() 3 1491064723.808669 4 >>> # t ...
- python内置re模块全面实战
目录 一:取消转义 二:python内置模块之re模块 三:常用方法 findall search match 简便 四:常用方法 finditer 匹配文件多情况 五:切割 替换 内置模块 六:分组 ...
- $Django 发送邮件--django封装模块和python内置SMTP模块
一 使用SMTP模块发送邮件 import smtplib from email.mime.text import MIMEText from email.header import Header m ...
- Python内置logging模块
最近调试Python代码比较多,发现logging模块很好用. 我的用法如下: import logging logging.basicConfig(level=logging.INFO, forma ...
- csv文件已经python内置csv模块
csv(Comma Separated Value,即逗号分隔值),文件以纯文本形式存储表格数据(数字和文本).可以用excel打开,并自动将每个逗号隔开的数据作为一列在excel中显示. pytho ...
- Python内置GUI模块Tkinter的几点笔记
组件属性,用法 组件位置 更多
- day25 内置常用模块(四): 模块和包
阅读目录: 模块 import from xxx import xxx 包 import from xxx import xxx from xxx import * __init__.p ...
- 浅谈Python内置对象类型——数字篇(附py2和py3的区别之一)
Python是一门面向对象的编程设计语言,程序中每一样东西都可以视为一个对象.Python内置对象可以分为简单类型和容器类型,简单类型主要是数值型数据,而容器类型是可以包含其他对象类型的集体,如序列. ...
随机推荐
- tensorFlow(一)相关重要函数理解
1.函数及参数:tf.nn.conv2d conv2d( input, filter, strides, padding, use_cudnn_on_gpu=True, data_format='NH ...
- IIS SSL证书 指定的登录会话不存在,可能已被终止 HRESULT:0x80070520
指定的登录会话不存在,可能已被终止 HRESULT:0x80070520 IIS导入证书时,选择”允许导出此证书” 服务器证书名称,在mmc控制台中个人证书中命名
- spring boot 添加客户端负载均衡
1.pom.xml文件中,添加依赖包 <dependency> <groupId>org.springframework.cloud</groupId> <a ...
- Java语法基础学习DayFourteen(IO)
一.java.io.FIle类 1.特点 (1)凡是与输入.输出相关的类.接口等都定义在java.io包下. (2)File是一个类,使用构造器创建对象,此对象对应一个文件(.txt .avi .do ...
- MySQL:函数
函数 一.数学函数 1.绝对值函数ABS(x): x为插入的数据,返回绝对值 2.返回圆周率函数PI(): 无需插入数据,返回圆周率的值,默认为小数点后6位 3.平方根函数SQRT(x): 返回非负数 ...
- 如何搭建并使用便携式 4G/LTE 伪基站研究移动安全
此文章PDF文档下载地址:点击下载 0x00 前言 在移动互联网深入普及和物联网开始规模应用的今天,网络安全公司怎能不研究移动安全,要研究移动安全,怎能没有4G/LTE伪基站研究测试环境? 本文介绍如 ...
- C++后台服务崩溃堆栈日志
C++后台服务崩溃堆栈日志 C/C++后台服务运行过程中总会出现一些不容易重现的崩溃故障,由于重现频率低,同时运行在服务器上,导致无法调试,此外服务直接崩溃,常规日志无法截获到有用信息,这时如果能够保 ...
- ubuntu16.04+caffe+GPU+cuda+cudnn安装教程
步骤简述: 1.安装GPU驱动(系统适配,不采取手动安装的方式) 2.安装依赖(cuda依赖库,caffe依赖) 3.安装cuda 4.安装cudnn(只是复制文件加链接,不需要编译安装的过程) 5. ...
- Python全栈之路----函数----作用域
Python中,一个函数就是一个作用域. 局部变量放置在其作用域中,根据作用域来区分,函数属于你,函数属于我. 定义完成后,作用域已经生成,使用时顺着作用域链向上查找. 函数定义完成后,不管被在哪儿被 ...
- best practices for designing web api
restful why: meaningful This will be improve efficiency , less documents , just read the code auto g ...