• os


     一、获取路径

    os常见方法

    os.path.curdir:当前目录
    os.path.pardir:父目录
    os.path.abspath(path):绝对路径
    os.path.join(): 常用来链接路径
    os.path.split(path): 把path分为目录和文件两个部分,以列表返回
    os.path.dirname(path)

    示例1
    >>> import os
    >>> help('os.path.sep')
    >>> print os.path.sep
    /
    >>> print os.path.altsep
    None
    >>> print os.path.curdir
    .
    >>> print os.path.abspath('/root')
    /root
    >>> print os.path.abspath('/root/pp')
    /root/pp
    >>> print os.path.abspath('/root/pp/f.c')
    /root/pp/f.c
    >>> print os.path.split('/root/pp/f.c')
    ('/root/pp', 'f.c')
    >>>  
    示例2

    os.path.dirname(path)

    功能:去掉文件名,返回目录 

    eg:
    print(os.path.dirname("E:/Read_File/read_yaml.py"))
    #结果:
    E:/Read_File
    
    print(os.path.dirname("E:/Read_File"))
    #结果:
    E:/
    

     os.path.dirname(__file__)

    print(__file__)
    #结果
    E:/Read_File/read_yaml.py 

      __file__表示了当前文件的path

     os.path.dirname((__file__) = os.path.dirname(“E:/Read_File/read_yaml.py”)

    需求:app.py中想读取config.ini文件的内容,即是获取config.ini绝对路径

    思路:

    从目录结构上可以看出,config.ini与app.py的父目录同级,

    也就是获取到app.py父目录(bin文件夹的路径)的父目录(config文件夹路径)的绝对路径

    再拼上config.ini文件名就能获取到config.ini文件 

    import os
     
    def load_file():
        # 获取当前文件路径
        current_path = os.path.abspath(__file__)
        # 获取当前文件的父目录
        father_path = os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".")
        # config.ini文件路径,获取当前目录的父目录的父目录与congig.ini拼接
        config_file_path=os.path.join(os.path.abspath(os.path.dirname(current_path) + os.path.sep + ".."),'config.ini')
        print('当前目录:' + current_path)
        print('当前父目录:' + father_path)
        print('config.ini路径:' + config_file_path)
     
     
    load_file()
    

      结果

    当前目录:/Users/shanml/Documents/python/config/bin/app.py
    当前父目录:/Users/shanml/Documents/python/config/bin
    config.ini路径:/Users/shanml/Documents/python/config/config.ini  

    main.py中执行app.py的load_file()

    from bin.app import load_file
    

     二、递归的情况,一个目录下面既有目录也有文件,使用os.walk

    我们在桌面上面建立一个file目录,里面的组织结构如下:

    file(dir):

         --|file1(dir):

               --|file1_test1.txt

               --|file1_test2.txt

         --|file2(dir)

               --|file2_test1.txt

         --|file_test1.txt

         --|file_test2.txt

    运行一下代码:

    import os
    path = r'C:UsersAdministratorDesktopfile'
    for dirpath,dirnames,filenames in os.walk(path):
        print(dirpath,dirnames,filenames)

    输出结果如下:

    C:UsersAdministratorDesktopfile ['file1', 'file2'] ['file_test1.txt', 'file_test2 .txt']
    C:UsersAdministratorDesktopfilefile1 [] ['file1_test1.txt', 'file1_test2.txt']
    C:UsersAdministratorDesktopfilefile2 [] ['file2_test1.txt']

      

    获得一个路径下面所有的文件路径:

    import os
    path = r'C:UsersAdministratorDesktopfile'
    for dirpath,dirnames,filenames in os.walk(path):
        for filename in filenames:
            print(os.path.join(dirpath,filename))

    os.walk输入一个路径名称,以yield的方式(其实是一个生成器)返回一个三元组 dirpath, dirnames, filenames,

    dirpath为目录的路径,为一个字符串。比如上面的 C:UsersAdministratorDesktopfile和C:UsersAdministratorDesktopfilefile1等。

    dirnames列出了目录路径下面所有存在的目录的名称。比如在 C:UsersAdministratorDesktopfile下面有两个目录:file1和file2,那么它就列出了这个目录路径下的目录名称。

    filenames列出了目录路径下面所有文件的名称。同样在 C:UsersAdministratorDesktopfile下面有两个文件file_test1.txt和file_test2 .txt,那么程序将会列出这两个文件名。

    得到的结果如下:

    C:UsersAdministratorDesktopfilefile_test1.txt
    C:UsersAdministratorDesktopfilefile_test2 .txt
    C:UsersAdministratorDesktopfilefile1file1_test1.txt
    C:UsersAdministratorDesktopfilefile1file1_test2.txt
    C:UsersAdministratorDesktopfilefile2file2_test1.txt
  • 相关阅读:
    C++STL中的unique函数解析
    STL中erase()的用法
    刷题技巧——简易哈希表的实现
    经典面试题目——找到第n个丑数(参考《剑指offer(第二版)》面试题49)
    C++中sort函数小结
    谈谈交叉验证法(个人小结)
    数字序列中某一位数字(《剑指offer》面试题44)
    求1~n整数中1出现的次数(《剑指offer》面试题43)
    2018年美团春招(第二批)题解
    C/C++中字符串和数字互转小结
  • 原文地址:https://www.cnblogs.com/zzy-9318/p/9524189.html
Copyright © 2020-2023  润新知