zoukankan      html  css  js  c++  java
  • Python中os.walk函数的用法(遍历文件夹下文件并获得路径

    Python中os.walk函数的用法(遍历文件夹下文件并获得路径)

        Python中os.walk函数的用法(遍历文件夹下文件并获得路径)
            参考文献
            引言
            os.walk使用
            获得所有子文件路径(os.path.join使用)

    参考文献

    https://blog.csdn.net/bagboy_taobao_com/article/details/8938126

    https://www.jianshu.com/p/bbad16822eab

    https://blog.csdn.net/lom9357bye/article/details/79285170

    http://python-docs.com/python-files/python-os-path-join.html
    引言

    我们在使用python时时常会遇到调用某些文件的需求,这时我们就需要得到这些文件的路径。python强大的自带os模块使得获得路径变得很容易。下面介绍如何使用os.walk函数来遍历文件夹及子文件夹下所有文件并得到路径。

    os.walk的完整定义形式如下:

    os.walk(top, topdown=True, onerror=None, followlinks=False)


    参数:

        top:需要遍历目录的地址。
        topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)。
        onerror 需要一个 callable 对象,当walk需要异常时,会调用。
        followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。

    以上四个参数一般只需要指定第一个文件夹路径,剩下的一般情况不需要指定。
    os.walk使用

    os.walk 的返回值是一个生成器(generator),也就是说我们需要用循环不断的遍历它(不可以直接print),来获得所有的内容。

    每次遍历的对象都是返回的是一个三元元组(root,dirs,files)

        root 所指的是当前正在遍历的这个文件夹的本身的地址
        dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
        files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

        注意,函数会自动改变root的值使得遍历所有的子文件夹。所以返回的三元元组的个数为所有子文件夹(包括子子文件夹,子子子文件夹等等)加上1(根文件夹)。

    举例:

    对于具有以下结构的目录进行测试:

    $ cd namesort/
    $ tree
    .
    |-- namelist.txt
    |-- nameout.txt
    |-- namesorttest.py
    `-- test
        |-- name2.txt
        |-- namelist.txt
        |-- nameout.txt
        `-- namesort.py


    执行:

    import os
    path = '/home/jhxie/Workspace/namesort'
    for root,dirs,files in os.walk(path):
            print root,dirs,files
    输出为:

    /home/jhxie/Workspace/namesort ['test'] ['nameout.txt', 'namelist.txt', 'namesorttest.py']
    /home/jhxie/Workspace/namesort/test [] ['nameout.txt', 'name2.txt', 'namelist.txt', 'namesort.py']

    获得所有子文件路径(os.path.join使用)

    由于os.walk获得的并不是路径,所以需要将其内容进行连接得到路径。

    这时使用python自带函数os.path.join,其语法为:

    os.path.join(path1[, path2[, ...]])

    其中嵌套的[]表示写在最前面的是高级目录,后面的是低级的,也就是按参数排列顺序拼接。

    举例:

    os.path.join("home", "me", "mywork")


    在Linux系统上会返回home/me/mywork
    在Windows系统上会返回homememywork

        可能大家已经注意到了,此函数并不是简单的字符串连接函数,你不需要在输入的参数字符串中加入分隔符,函数会根据你的系统自动加入对应的分隔符,这也是这个函数存在的意义所在。

    所以我们正好使用os.path.join()来处理上面生成的遍历结果:

    import os
    path = '/home/jhxie/Workspace/namesort'
    for root,dirs,files in os.walk(path):
            for file in files:
                    print(os.path.join(root,file))


    输出结果:

    /home/jhxie/Workspace/namesort/nameout.txt
    /home/jhxie/Workspace/namesort/namelist.txt
    /home/jhxie/Workspace/namesort/namesorttest.py
    /home/jhxie/Workspace/namesort/test/nameout.txt
    /home/jhxie/Workspace/namesort/test/name2.txt
    /home/jhxie/Workspace/namesort/test/namelist.txt
    /home/jhxie/Workspace/namesort/test/namesort.py
    ————————————————
    版权声明:本文为CSDN博主「hairenvsgebaini」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_41562433/article/details/82995098

  • 相关阅读:
    利用matlab给图像加高斯噪声
    频谱分析代码片段2
    相关性分析代码片段2
    相关性分析代码片段
    频谱分析代码片段
    大脑提取每一个体素26领域的matlab代码
    当前所看论文记录
    论文阅读笔记
    余弦距离、欧氏距离和杰卡德相似性度量的对比分析 by ChaoSimple
    Container With Most Water
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/14678797.html
Copyright © 2011-2022 走看看