zoukankan      html  css  js  c++  java
  • python os用法详解

    前言:在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块,所以今天整理下比较常用的几个方法。网上这方面资料也很多,每次整理,只是对自己所学的知识进行梳理,从而加深对某个模块的使用。

    那我们看看他们的使用吧:

    • 获取文件所在路径
    • import os 
    • ♦1.os.path.dirname(__file__)  获取当前文件的所在路径

      输入:

    import os
    from reptile import *
    print(os.path.dirname(__file__))

      输出:

    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F:/Python/pag

      1-1.print (os.path.dirname(os.path.dirname(__file__))) 获取当前文件的所在目录的上级路径

    输入:

    import os
    from reptile import *
    print(os.path.dirname(os.path.dirname(__file__)))

    输出:

    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F:/Python

       1-2.print (os.path.dirname(os.path.dirname(os.path.dirname(__file__))))  获取当前文件的所在目录的上级目录的上级路径

    输入:

    import os
    from reptile import *
    print (os.path.dirname(os.path.dirname(os.path.dirname(__file__))))

    输出:

    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F:/

      ♦2.os.getcwd()——得到当前工作的目录。

     

    输入:
    print (os.getcwd())
    
    输出:
    F:Pythonpag

      ♦3.os.name()——判断现在正在实用的平台,Windows 返回 ‘nt‘; Linux 返回’posix‘

     

      ♦4,os.listdir()——指定所有目录下所有的文件和目录名。

    输入:
    print (os.listdir())
    输出:
    F:Pythonpython.exe F:/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:Pythonpython.exe F:/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:Pythonpython.exe F:/Python/pag/dict_usage.py
    False

      11.os.path.exists()——检验指定的对象是否存在。是True,否则False.例:

    输入:
    print (os.path.exists('./lib'))
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    False

      12.os.path.split()——返回路径的目录和文件名。

    输入:
    print (os.path.split('E:
    equests-2.18.4.tar.gz.asc'))
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    ('E:', '
    equests-2.18.4.tar.gz.asc')

      此处只是把前后两部分分开而已。就是找最后一个‘/‘。看例子:

    输入:
    print (os.path.split('E: '))
    输出:
    F:Pythonpython.exe F:/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 -*-
    
    import os, 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:Pythonpython.exe F:/Python/pag/dict_usage.py
    456

      16.os.path.abspath()——获得绝对路径。

    输入:
    print (os.path.abspath('.'))
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F:Pythonpag

      17.os.path.join(path, name)——连接目录和文件名。

    输入:
    print (os.path.join('F: ','lavu.exl'))
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F: lavu.exl

      18.os.path.basename(path)——返回文件名

    输入:
    print (os.path.basename('F:QCExplorer.ini'))
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    QCExplorer.ini

      19.os.path.dirname(path)——返回文件路径

    输入:
    print (os.path.dirname('F:QCExplorer.ini'))
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F:

      20.获得当前程序所在的实际目录

    输入:
    import os
    import sys
    
    if __name__ == "__main__":
        print os.path.realpath(sys.argv[0])
        print os.path.split(os.path.realpath(sys.argv[0]))
        print os.path.split(os.path.realpath(sys.argv[0]))[0]
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    F:Pythonpagdict_usage.py
    ('F:\Python\pag', 'dict_usage.py')
    F:Pythonpag

      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
    '
    '            #Windows使用'
    ',Linux使用'
    '而Mac使用'
    '>>> 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
    import os
    os.system(‘E:\test_object\all_test.py‘)
    
    或者
    
    import os
    os.chdir("E:\test_object")
    os.system(‘Python all_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=lambda fn: os.path.getmtime(result_dir+"\"+fn))
    print ('最新的文件为: ' + lists[-1])
    file = os.path.join(result_dir,lists[-1])
    print(file)
    输出:
    F:Pythonpython.exe F:/Python/pag/dict_usage.py
    最新的文件为: 我以月夜寄相思.txt
    F:我以月夜寄相思.txt
    
    Process finished with exit code 0

    这样我们既可以找到最后一个被修改的文件是啥了。

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

     

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

    代码如下:

    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:pythontestostest下面最新的文件
    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模块

     

  • 相关阅读:
    Mysql 时间操作
    curl 学习
    CURL详解
    mysql 获取当前时间戳
    php开启openssl的方法
    0,null,empty,空,false,isset
    ecshop微信扫描支付开发
    seaJs的简单应用
    js运动框架之掉落的扑克牌(重心、弹起效果)
    js运动框架完成块的宽高透明度及颜色的渐变
  • 原文地址:https://www.cnblogs.com/insane-Mr-Li/p/9153394.html
Copyright © 2011-2022 走看看