• python os.walk详解


    os模块大全详情

    os.walk
    os.walk方法,主要用来遍历一个目录内各个子目录和子文件。

    os.walk(top, topdown=True, onerror=None, followlinks=False)
    可以得到一个三元tupple(dirpath, dirnames, filenames),

    第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
    dirpath 是一个string,代表目录的路径,
    dirnames 是一个list,包含了dirpath下所有子目录的名字。
    filenames 是一个list,包含了非目录文件的名字。
    这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).

    通过for循环自动完成递归枚举

    目录是这样的文件目录结构:

    [root@xiaoma mcw]# tree
    .
    ├── cur1.txt
    ├── cur2.txt
    ├── mcw
    │   ├── m1.txt
    │   └── m2.txt
    ├── test.py
    └── xiaoma
        ├── x1.txt
        └── x2.txt
    
    2 directories, 7 files

    (1)

    import os
    result = os.walk("./")
    print(result)
    ------------------结果:
    [root@xiaoma mcw]# python test.py 
    <generator object walk at 0x7f0e90ad17d0> 

    (2)os.walk是很多个元组

    import os
    result = os.walk("./")  
    print(result)
    for i in result:
        print(i)     #i代表每个目录以及目录下的文件名字。
    ---------------结果;
    [root@xiaoma mcw]# python test.py 
    ('./', ['xiaoma', 'mcw'], ['test.py', 'cur2.txt', 'cur1.txt'])   #当前目录 当前目录下的目录,当前目录下的文件
    ('./xiaoma', [], ['x1.txt', 'x2.txt'])  子目录以及子目录写的文件
    ('./mcw', [], ['m2.txt', 'm1.txt'])
    #代码解析:os.walk("./") 的第一个元组的第一个元素是指定目录的名字,第二个元素当前目录下的子目录,第三个元素是当前目录下的文件列表。
    第二个元组的第一个元素便是子目录的名字字符串;第二个元素就是子目录的子目录,如果没有就是空列表;第三个元素就是这个子目录下的文件列表。
    第三个元组是当前目录下的另一个子目录。第一个元素是子目录的名称字符串;第二个元素是子目录的子目录。第三个元素是这个子目录下的文件列表。

    (3)a,正在查询的./目录下的单层目录

    import os
    result = os.walk("./")
    for a,b,c in result:   
        print(a)             #a所有目录
    ------------------结果:
    [root@xiaoma mcw]# python test.py 
    ./
    ./xiaoma
    ./mcw

    4)b表示这个目录下的各个子目录列表,子目录没有子目录就显示为空列表

    import os
    result = os.walk("./")
    for a,b,c in result:   
        print(b)
    --------------结果:
    [root@xiaoma mcw]# python test.py 
    ['xiaoma', 'mcw'] #查询的目录./下的子目录
    []  #xiaoma目录下的子目录
    []  #mcw目录下的子目录

    5)#c,表示各个目录下的文件列表

    import os
    result = os.walk("./")
    for a,b,c in result:   
        print(c)                 #c,各个目录文件列表
    ----------------结果:
    [root@xiaoma mcw]# python test.py 
    ['test.py', 'cur2.txt', 'cur1.txt']
    ['x1.txt', 'x2.txt']
    ['m2.txt', 'm1.txt']

    6)遍历这个目录下所有文件,包括子目录的文件

    import os
    result = os.walk("./")
    for a,b,c in result:
        # a,正在查看的目录 b,此目录下的文件夹  c,此目录下的文件
        for item in c:
            path = os.path.join(a,item)   #
            print(path)
    -----------------结果:
    [root@xiaoma mcw]# python test.py 
    ./test.py
    ./cur2.txt
    ./cur1.txt
    ./xiaoma/x1.txt
    ./xiaoma/x2.txt
    ./mcw/m2.txt
    ./mcw/m1.txt

    7)有三级以上的目录

    ('./', ['xiaoma', 'mcw'], ['test.py', 'cur2.txt', 'cur1.txt'])
    ('./xiaoma', [], ['x1.txt', 'x2.txt'])
    ('./mcw', ['haizi'], ['m2.txt', 'm1.txt'])
    ('./mcw/haizi', [], [])

    参考:
    1)https://www.cnblogs.com/JetpropelledSnake/p/8982495.html

  • 相关阅读:
    WebStorm下配置supervisor热部署NodeJS
    Node.js如何使用MySQL的连接池实例
    node.js中mysql连接池的使用
    VMware10下CentOS7的详细安装图解
    APP数据埋点
    (转载) Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化
    Python3 _ 读取大文件
    Python3 -- PySQL -- 将函数封装在类中
    Python3 MySQL 数据库连接
    js--同步运动json上
  • 原文地址:https://www.cnblogs.com/machangwei-8/p/10725205.html
Copyright © 2020-2023  润新知