python os用法详解 - 博客园

文章推薦指數: 80 %
投票人數:10人

python os用法详解. 前言:在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告 ... 首页 新闻 博问 专区 闪存 班级 我的博客 我的园子 账号设置 简洁模式... 退出登录 注册 登录 工具时间 每天逼着自己写点东西,终有一天会为自己的变化感动的。

这是一个潜移默化的过程,每天坚持编编故事,自己不知不觉就会拥有故事人物的特质的。

Explicitisbetterthanimplicit.(清楚优于含糊) pythonos用法详解 前言:在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块,所以今天整理下比较常用的几个方法。

网上这方面资料也很多,每次整理,只是对自己所学的知识进行梳理,从而加深对某个模块的使用。

那我们看看他们的使用吧: 获取文件所在路径 importos  ♦1.os.path.dirname(__file__) 获取当前文件的所在路径   输入: importos fromreptileimport* print(os.path.dirname(__file__))   输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:/Python/pag   1-1.print(os.path.dirname(os.path.dirname(__file__))) 获取当前文件的所在目录的上级路径 输入: importos fromreptileimport* print(os.path.dirname(os.path.dirname(__file__))) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:/Python    1-2.print(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) 获取当前文件的所在目录的上级目录的上级路径 输入: importos fromreptileimport* print(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:/   ♦2.os.getcwd()——得到当前工作的目录。

  输入: print(os.getcwd()) 输出: F:\Python\pag   ♦3.os.name()——判断现在正在实用的平台,Windows返回‘nt‘;Linux返回’posix‘     ♦4,os.listdir()——指定所有目录下所有的文件和目录名。

输入: print(os.listdir()) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py ['CRVanguard.py','dict_usage.py','establish_review.py','invoketestcase.py','__init__.py','__pycache__']#以列表的形式全部列举出来,其中没有区分目录和文件。

  ♦5.os.remove()——删除指定文件 输入: print(os.remove('E:\python-3.2.3.amd64.msi')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py None      ♦6.os.rmdir()——删除指定目录   ♦7.os.mkdir()——创建目录注意:这样只能建立一层,   ♦8.os.makedirs()——递归建立目录   ♦9.os.path.isfile()——判断指定对象是否为文件。

是返回True,否则False   ♦10.os.path.isdir()——判断指定对象是否为目录。

是True,否则False 输入: print(os.path.isdir('lib')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py False   ♦11.os.path.exists()——检验指定的对象是否存在。

是True,否则False.例: 输入: print(os.path.exists('./lib')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py False   ♦12.os.path.split()——返回路径的目录和文件名。

输入: print(os.path.split('E:\requests-2.18.4.tar.gz.asc')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py ('E:','\requests-2.18.4.tar.gz.asc')   此处只是把前后两部分分开而已。

就是找最后一个‘/‘。

看例子: 输入: print(os.path.split('E:\')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py ('E:\\','')   ♦13.os.system()——执行shell命令。

例: 注意:此处运行shell命令时,如果要调用python之前的变量,可以用如下方式: var=123 os.environ[‘var‘]=str(var)//注意此处[]内得是“字符串” os.system(‘echo$var‘)   ♦14. os.chdir()——改变目录到指定目录 输入: #!/usr/bin/python #-*-coding:UTF-8-*- importos,sys path="/tmp" #查看当前工作目录 retval=os.getcwd() print"当前工作目录为%s"%retval #修改当前工作目录 os.chdir(path) #查看修改后的工作目录 retval=os.getcwd() print"目录修改成功%s"%retval 输出: 当前工作目录为/www 目录修改成功/tmp   ♦15.os.path.getsize()——获得文件的大小,如果为目录,返回0 输入: print(os.path.getsize('F:\QCExplorer.ini')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py 456   ♦16.os.path.abspath()——获得绝对路径。

输入: print(os.path.abspath('.')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:\Python\pag   ♦17.os.path.join(path,name)——连接目录和文件名。

输入: print(os.path.join('F:\','lavu.exl')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:\\lavu.exl   ♦18.os.path.basename(path)——返回文件名 输入: print(os.path.basename('F:\QCExplorer.ini')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py QCExplorer.ini   ♦19.os.path.dirname(path)——返回文件路径 输入: print(os.path.dirname('F:\QCExplorer.ini')) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:\   ♦20.获得当前程序所在的实际目录 输入: importos importsys if__name__=="__main__": printos.path.realpath(sys.argv[0]) printos.path.split(os.path.realpath(sys.argv[0])) printos.path.split(os.path.realpath(sys.argv[0]))[0] 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py F:\Python\pag\dict_usage.py ('F:\\Python\\pag','dict_usage.py') F:\Python\pag   ♦21.查看文件时间     ♦os.path.getmtime(path):文件或文件夹的最后修改时间,从新纪元到访问时的秒数。

       ♦os.path.getatime(path):文件或文件夹的最后访问时间,从新纪元到访问时的秒数。

       ♦os.path.getctime(path):文件或文件夹的创建时间,从新纪元到访问时的秒数。

>>>os.path.getmtime('D:\\pythontest\\ostest\\hello.py') 1481695651.857048 >>>os.path.getatime('D:\\pythontest\\ostest\\hello.py') 1481687717.8506615 >>>os.path.getctime('D:\\pythontest\\ostest\\hello.py') 1481687717.8506615    22.os.sep可以取代操作系统特定的路径分割符。

  23.os.linesep字符串给出当前平台使用的行终止符   >>>os.linesep '\r\n'#Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。

>>>os.sep '\\'#Windows >>>     24.os.path.splitext():分离文件名与扩展名 >>>os.path.splitext('a.txt') ('a','.txt')   25.os.path.normpath(path):规范path字符串形式       重点:用法   ♦在Python的os模块中提供了system()用来执行系统命令。

    比如我们要执行E:\\test_object\\目录    下的all_test.py文件,可以这样来实现: #coding=utf-8 importos os.system(‘E:\\test_object\\all_test.py‘) 或者 importos os.chdir("E:\\test_object") os.system(‘Pythonall_test.py‘)   ♦组合用法: 通过os.listdir()可以获取目录下的所有文件 通过os.path.getmtime(path) #返回在此path下最后一次修改的时间 通过os.path.join(path,name)连接目录和文件名 输入: result_dir=('F:\\') lists=os.listdir(result_dir) #重新按时间对目录下的文件进行排列 lists.sort(key=lambdafn:os.path.getmtime(result_dir+"\\"+fn)) print('最新的文件为:'+lists[-1]) file=os.path.join(result_dir,lists[-1]) print(file) 输出: F:\Python\python.exeF:/Python/pag/dict_usage.py 最新的文件为:我以月夜寄相思.txt F:\我以月夜寄相思.txt Processfinishedwithexitcode0 这样我们既可以找到最后一个被修改的文件是啥了。

实例:在自动化测试过程中,常常需要发送邮件,将最新的测试报告文档发送给相关人员查看,这是就需要查找最新文件的功能。

  举例:查找文件夹下最新的文件。

  代码如下: importos defnew_file(test_dir): #列举test_dir目录下的所有文件(名),结果以列表形式返回。

lists=os.listdir(test_dir) #sort按key的关键字进行升序排序,lambda的入参fn为lists列表的元素,获取文件的最后修改时间,所以最终以文件时间从小到大排序 #最后对lists元素,按文件修改时间大小从小到大排序。

lists.sort(key=lambdafn:os.path.getmtime(test_dir+'\\'+fn)) #获取最新文件的绝对路径,列表中最后一个值,文件夹+文件名 file_path=os.path.join(test_dir,lists[-1]) returnfile_path #返回D:\pythontest\ostest下面最新的文件 printnew_file('D:\\systemfiles\\workspace\\selenium\\email126pro\\email126\\report') 运行结果: 最后再啰嗦一句,关于lambda的用法(python中单行的最小函数): key=lambdafn:os.path.getmtime(test_dir+'\\'+fn) #相当于 defkey(fn): returnos.path.getmtime(test_dir+'\\'+fn) 部分转自:python之os模块   每天一点点,感受自己存在的意义。

posted@ 2018-06-0723:44  tooltime  阅读(6059)  评论(1)  编辑  收藏  举报 刷新评论刷新页面返回顶部 Copyright©2022tooltime Poweredby.NET6onKubernetes



請為這篇文章評分?