吴裕雄--python学习笔记:os模块的使用
在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块。
1.当前路径及路径下的文件 os.getcwd():查看当前所在路径。 os.listdir(path):列举目录下的所有文件。返回的是列表类型。
import os print(os.getcwd())
print(os.listdir(os.getcwd()))
C:\Users\Administrator\pythonwork
['.ipynb_checkpoints', 'turtle.ipynb', 'Untitled.ipynb', 'Untitled1.ipynb', 'Untitled2.ipynb', 'Untitled3.ipynb', 'Untitled4.ipynb']
2.绝对路径 os.path.abspath(path):返回path的绝对路径。
3.查看路径的文件夹部分和文件名部分 os.path.split(path):将路径分解为(文件夹,文件名),返回的是元组类型。可以看出,若路径字符串最后一个字符是\,则只有文件夹部分有值;若路径字符串中均无\,则只有文件名部分有值。若路径字符串有\,且不在最后,则文件夹和文件名均有值。且返回的文件夹的结果不包含\. os.path.join(path1,path2,...):将path进行组合,若其中有绝对路径,则之前的path将被删除。
print(os.path.abspath('.'))
C:\Users\Administrator\pythonwork
print(os.path.abspath('..'))
C:\Users\Administrator
print(os.path.split('D:\\pythontest\\ostest\\Hello.py'))
('D:\\pythontest\\ostest', 'Hello.py')
print(os.path.split('.'))
('', '.')
print(os.path.split('D:\\pythontest\\ostest\\'))
('D:\\pythontest\\ostest', '')
os.path.split('D:\\pythontest\\ostest')
print(os.path.split('D:\\pythontest\\ostest'))
('D:\\pythontest', 'ostest')
print(os.path.join('D:\\pythontest', 'ostest'))
D:\pythontest\ostest
print(os.path.join('D:\\pythontest\\ostest', 'hello.py'))
D:\pythontest\ostest\hello.py
print(os.path.join('D:\\pythontest\\b', 'D:\\pythontest\\a'))
D:\pythontest\a
print(os.path.dirname('D:\\pythontest\\ostest\\hello.py'))
D:\pythontest\ostest
print(os.path.dirname('.'))
print(os.path.dirname('D:\\pythontest\\ostest\\'))
D:\pythontest\ostest
print(os.path.dirname('D:\\pythontest\\ostest'))
D:\pythontest
os.path.basename(path):返回path中的文件名。
print(os.path.basename('D:\\pythontest\\ostest\\hello.py'))
hello.py
print(os.path.basename('.'))

print(os.path.basename('D:\\pythontest\\ostest\\'))
print(os.path.basename('D:\\pythontest\\ostest'))
ostest
4.查看文件时间 os.path.getmtime(path):文件或文件夹的最后修改时间,从新纪元到访问时的秒数。 os.path.getatime(path):文件或文件夹的最后访问时间,从新纪元到访问时的秒数。 os.path.getctime(path):文件或文件夹的创建时间,从新纪元到访问时的秒数。
print(os.path.getmtime('F:\\aa.txt'))
1563784321.1284573
print(os.path.getatime('F:\\aa.txt'))
1568359546.3176775
print(os.path.getctime('F:\\aa.txt'))
1568359546.2771735
5.查看文件大小 os.path.getsize(path):文件或文件夹的大小,若是文件夹返回0。
print(os.path.getsize('F:\\aa.txt'))
19
print(os.path.getsize('F:\\'))
20480
6.查看文件是否存在 os.path.exists(path):文件或文件夹是否存在,返回True 或 False。
print(os.listdir(os.getcwd()))
['.ipynb_checkpoints', 'turtle.ipynb', 'Untitled.ipynb', 'Untitled1.ipynb', 'Untitled2.ipynb', 'Untitled3.ipynb', 'Untitled4.ipynb']
print(os.path.exists('D:\\pythontest\\ostest\\hello.py'))
False
print(os.path.exists('D:\\pythontest\\ostest\\Hello.py'))
False
print(os.path.exists('D:\\pythontest\\ostest\\Hello1.py'))
False
7.一些表现形式参数 os中定义了一组文件、路径在不同操作系统中的表现形式参数,如:
print(os.sep)
\
print(os.extsep)
.
print(os.pathsep)
;
print(os.linesep)
8.实例说明 在自动化测试过程中,常常需要发送邮件,将最新的测试报告文档发送给相关人员查看,这是就需要查找最新文件的功能。 举例:查找文件夹下最新的文件。

import os
def new_file(test_dir):
#列举test_dir目录下的所有文件(名),结果以列表形式返回。
lists=os.listdir(test_dir)
#sort按key的关键字进行升序排序,lambda的入参fn为lists列表的元素,获取文件的最后修改时间,所以最终以文件时间从小到大排序
#最后对lists元素,按文件修改时间大小从小到大排序。
lists.sort(key=lambda fn:os.path.getmtime(test_dir+'\\'+fn))
#获取最新文件的绝对路径,列表中最后一个值,文件夹+文件名
file_path=os.path.join(test_dir,lists[-1])
return file_path #返回D:\pythontest\ostest下面最新的文件
print new_file('D:\\system files\\workspace\\selenium\\email126pro\\email126\\report')

关于lambda的用法(python中单行的最小函数):
key=lambda fn:os.path.getmtime(test_dir+'\\'+fn)
#相当于
def key(fn):
return os.path.getmtime(test_dir+'\\'+fn)
吴裕雄--python学习笔记:os模块的使用的更多相关文章
- python学习笔记-os模块参数
python的os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: os.access(path, mode) 检验权限模式 os.chdir(path) 改变当前工作目录 os. ...
- 吴裕雄--python学习笔记:os模块函数
os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...
- 吴裕雄--python学习笔记:sqlite3 模块
1 sqlite3.connect(database [,timeout ,other optional arguments]) 该 API 打开一个到 SQLite 数据库文件 database 的 ...
- 吴裕雄--python学习笔记:BeautifulSoup模块
import re import requests from bs4 import BeautifulSoup req_obj = requests.get('https://www.baidu.co ...
- 吴裕雄--python学习笔记:sqlite3 模块的使用与学生信息管理系统
import sqlite3 cx = sqlite3.connect('E:\\student3.db') cx.execute( '''CREATE TABLE StudentTable( ID ...
- 吴裕雄--python学习笔记:爬虫基础
一.什么是爬虫 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息. 二.Python爬虫架构 Python 爬虫架构主要由五个部分组成,分别是调度器.URL管理器.网页下载器.网 ...
- 吴裕雄--python学习笔记:爬虫包的更换
python 3.x报错:No module named 'cookielib'或No module named 'urllib2' 1. ModuleNotFoundError: No module ...
- 吴裕雄--python学习笔记:爬虫
import chardet import urllib.request page = urllib.request.urlopen('http://photo.sina.com.cn/') #打开网 ...
- 吴裕雄--python学习笔记:通过sqlite3 进行文字界面学生管理
import sqlite3 conn = sqlite3.connect('E:\\student.db') print("Opened database successfully&quo ...
随机推荐
- Jisa's Notebook
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...
- docker---安装docker
今天开始要初步的学习 docker 了,这也是进入虚拟化方向的一个步骤,学习一个东西首先要从搭建环境开始,哈哈 安装环境及版本: 系统:Ubuntu18.04 STL Docker 版本:19.03. ...
- PAT甲级——1146 Topological Order (25分)
This is a problem given in the Graduate Entrance Exam in 2018: Which of the following is NOT a topol ...
- long型长整数字在前端页面显示异常及其解决方法
文章目录 1.引子 2.解决问题 (1)初试EL表达式取long型数值 (2)再探EL表达式取字符串格式long型数值 (3)最后一试---给EL表达式加引号 3.总结 1.引子 在做项目中,发现了一 ...
- tensorflow从训练自定义CNN网络模型到Android端部署tflite
网上有很多关于tensorflow lite在安卓端部署的教程,但是大多只讲如何把训练好的模型部署到安卓端,不讲如何训练,而实际上在部署的时候,需要知道训练模型时预处理的细节,这就导致了自己训练的模型 ...
- CSP模拟赛游记
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时 ...
- 17.3.13--pycharm2和3的常识问题
1------pycharm 3~支持print(),不支持那个 print+一个空格的形式 pycharm2~~支持print+一个空格,,也支持那个print()形式 虽然print语法是Pyth ...
- Debian8.8为普通用户添加sudo权限
1.进入root用户,su root 输入密码,我们首先修改 /etc/sudoers 文件的属性为可写权限# chmod +w /etc/sudoers2.编辑 vim /etc/sudoers,添 ...
- [原]PInvoke导致栈破坏
原, 总结, 调试, 调试案例 项目中遇到一个诡异的问题,程序在升级到.net4.6.1后会崩溃,提示访问只读内存区.大概现象如下: debug版不崩溃,release版稳定崩溃. 只有x64位的程 ...
- layui子弹框调用父弹框方法
var thisFrame = parent.window.document.getElementById("LAY_layuiStampDuty1").getElementsBy ...