python中os.walk_python pathlib

python中os.walk_python pathlibpython os.walk详解

大家好,又见面了,我是你们的朋友全栈君。

 

os模块大全详情

 

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

os.walk(top, topdown=True, οnerrοr=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

 

转载于:https://www.cnblogs.com/machangwei-8/p/10725205.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106874.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSM整合redis

    SSM整合redis一、关于SSM整合Redis需要知道的一些小知识在学习Redis的时候,大家应该知道,JAVA操作redis通常使用的是Jedis,通过java代码来操作redis的数据存储读取等操作,用过的人应该知道,Jedis客户端已经足够简单和轻量级了,但是呢,在此同时,Spring也为Redis提供了支持,就是在Spring-data模块中的Spring-Data-Redis(SDR),它一部分是基于Jed

    2022年4月30日
    54
  • 收集了50道基础的java面试题

    下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最

    2021年12月23日
    51
  • nginx和keepalived实现nginx高可用_weblogic负载均衡

    nginx和keepalived实现nginx高可用_weblogic负载均衡一、Keepalived简要介绍Keepalived是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障的发生,通过配合Nginx可以实现web前端服务的高可用。Keepalived以VRRP协议为实现基础,用VRRP协议来实现高可用性(HA)。VRRP(VirtualRouterRedundancyProtocol)协议

    2025年8月15日
    3
  • pycharm如何缩进多行代码_pycharm统计代码行数

    pycharm如何缩进多行代码_pycharm统计代码行数方法一:在代码界面,点击鼠标右键,然后按住鼠标左键下拉选择就行了方法二:直接按下快捷键,alt+shift+insert,然后长按鼠标左键下拉即可进入多行编辑模式。…

    2022年8月26日
    8
  • Linux Shell 字符串转数字

    Linux Shell 字符串转数字原型 value n key Xm value 自定义变量得到运算的值 n 欲转成的进制数 2 进制就是 2 10 进制就是 10key 字符串变量 X 操作符 如 nbsp amp m 操作数实例 1 10 进制字符 32 加上 32a 32 value 10 a 32

    2025年11月13日
    2
  • pycharm如何在运行时打开控制台[通俗易懂]

    pycharm如何在运行时打开控制台[通俗易懂]pycharm如何在运行时打开控制台解决方案:

    2022年8月25日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号