首页 - 技术 - python os.walk详解

python os.walk详解

2023-09-29 12:32

os 模块完整详细信息

os.walk
os.walk方法主要用于遍历目录中的各个子目录和子文件。

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

第一个是起始路径,第二个是起始路径下的文件夹,第三个是起始路径下的文件。
dirpath是一个字符串,代表目录的路径,
dirnames是一个列表,包含dirpath下所有子目录的名称。
filenames 是包含非目录文件名称的列表。
这些名称不包含路径信息。如果需要获取完整路径,需要使用os.path.join(dirpath, name)。

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

目录具有以下文件目录结构:

[root@xiaoma mcw]#树
。
├── cur1.txt
├── cur2.txt
├── MCW
│ ├── m1.txt
│ └── m2.txt
├── 测试.py
└── 小马
    ├── x1.txt
    └── x2.txt

2 目录、7 文件

(1)

导入操作系统
结果 = os.walk("./")
打印(结果)
------------------ 结果:
[root@xiaoma mcw]# python www.gsm-guard.net
对象步行于0x7f0e90ad17d0>

(2) os.walk 是很多元组

导入操作系统
结果 = os.walk("./")
打印(结果)
对于 i 结果:
    print(i) #i代表每个目录以及该目录下的文件名。
---------------结果;
[root@xiaoma mcw]# python www.gsm-guard.net
('./',['小马','mcw' ], ['www.gsm-guard.net','cur2.txt', 'cur1.txt ']) #当前目录当前目录下的目录,当前目录下的文件
('./小马',[],['x1.txt', 'x2 .txt']) 子目录以及子目录中写入的文件
('./mcw',[],['m2.txt', 'm1 .txt'])
#代码分析:os.walk("./")第一个元组第一个元素是指定目录的名称,第二个元素是目录的名称当前目录。子目录,第三个元素是当前目录下的文件列表。
第二个元组的第一个元素是子目录的名称字符串;第二个元素是子目录的子目录,如果不是,则为空列表;第三个元素是该子目录中的文件列表。
第三个元组是当前目录下的另一个子目录。第一个元素是子目录的名称字符串;第二个元素是子目录的子目录。第三个元素是该子目录中的文件列表。 

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

导入操作系统
结果 = os.walk("./")
对于 a,b,c  结果:
    print(a) #aall 目录------------------ 结果:
[root@xiaoma mcw]# python www.gsm-guard.net
./
./小马
./mcw

4) b 表示该目录下各子目录的列表。如果子目录没有子目录,则会显示为空列表

导入操作系统
结果 = os.walk("./")
对于 a,b,c  结果:
    打印(b)
---------------- 结果:
[root@xiaoma mcw]# python www.gsm-guard.net
['xiaoma','mcw'] #查询目录./子目录下的理论
[] #小马目录下的子目录
[]#mcw目录下的子目录

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

导入操作系统
结果 = os.walk("./")
对于 a,b,c  结果:
    print(c) #c,各个目录下的文件列表
---------------- 结果:
[root@xiaoma mcw]# python www.gsm-guard.net
['www.gsm-guard.net','cur2.txt', 'cur1.txt ']
['x1.txt','x2.txt']
['M2.TXT'I,'M1.TXT'I]

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

导入操作系统结果 = os.walk("./")
对于 a,b,c  结果:
    # a、正在查看的目录 b、该目录下的文件夹 c、该目录下的文件
    用于 项目 c:
        路径 = os.path.join(a,item) #
        打印(路径)
------------------ 结果:
[root@xiaoma mcw]# python www.gsm-guard.net
./www.gsm-guard.net
./cur2.txt
./cur1.txt
./xiaoma/x1.txt
./xiaoma/x2.txt
./mcw/m2.txt
./mcw/m1.txt

7) 目录有3个以上

('./',['小马''mcw' ], ['www.gsm-guard.net','cur2.txt'》 、' cur1.txt'])
('./小马',[],['x1.txt', 'x2 .txt'])
('./mcw',['海子'],[ 'm2.txt', 'm1.txt'])
('./mcw/haizi',[],[])

参考:
1) https://www.gsm-guard.net/JetpropelledSnake/p/8982495.html