浅析Python3中遍历目录的三种方法

 更新时间:2023年07月18日 09:45:20   作者:Commas.KM  
在学习中,工作中,我们经常会说遍历一下当前目录咯,那么Python3中遍历目录的方法具体都有哪些呢并且如何操作呢,下面小编就来和大家简单聊聊吧

一、目录、文件夹、文件以及路径的概念

在学习中,工作中,我们经常会说遍历一下当前目录咯。但是一旦被问到这个目录到底是什么的时候,明明我们感觉自己知道是什么,却又说不清楚到底是什么。没关系,接下来我们来了解下,下次就可以说清楚啦……

中文名英文名说明
目录directory一系列文件和文件夹的集合
文件夹folder用来存放文件和文件夹的容器
文件file用来存储信息的单个数据单元(文本、图像、声音等等)
路径path用于定位文件的路径

从上表可以看出,目录和文件夹意思差不多……

实际上目录是DOS操作系统时期的称呼,而Windows操作系统时期的称呼为文件夹。

严格来说,目录不是文件夹,因为目录映射到存储介质上的物理位置,而文件夹不一定,例如桌面上的文件夹。

现在我们回过头来看“遍历一下当前目录”的含义,实际上就是遍历一系列的文件与文件夹。

这些文件与文件夹和当前路径有着千丝万缕的关系,因此我们会觉得当前目录的感觉又有点侧重于路径,不过它绝不是路径。

二、三种遍历目录的方法

代码返回说明
os.listdir(path)返回查询路径下的所有目录的列表,不包括子孙目录
os.walk(GenericPath)返回一个三元组的迭代器,其中元组(root,dirs,files)
os.scandir(GenericPath)返回以一个DirEntry(目录条目)对象的迭代器

先看看当前目录结构,这次就在命令行看吧。(想快速了解命令行如何使用,请看我CSDN中的另外一篇博客《Windows中的CMD不需要死记硬背》)

首先,我们得了解怎么用tree来查看当前目录树,执行tree /?

PS D:\Mine\PythonWork\k001_dir> tree /?
以图形显示驱动器或路径的文件夹结构。       
TREE [drive:][path] [/F] [/A]
   /F   显示每个文件夹中文件的名称。       
   /A   使用 ASCII 字符,而不使用扩展字符。

然后,我们使用tree /F查看当前目录树结构,如下所示

PS D:\Mine\PythonWork\k001_dir> tree /F
文件夹 PATH 列表    
卷序列号为 277B-1704
D:.
│  0.txt
│  main.py

└─父目录
    │  1.txt        
    │
    └─子目录        
        │  21.txt   
        │  22.txt   
        │  23.txt   
        │
        └─孙目录
                31.txt
                32.txt

话不多说,直接代码

# coding:utf-8
import os
def traversal_dirs(path):
    # 递归遍历目录 listdir
    for dir in os.listdir(path):
        dir = os.path.join(path, dir)
        print(dir)
        if os.path.isdir(dir):
            traversal_dirs(dir)
def untraversal_walk(path):
    # 无需递归遍历目录 walk
    for root, dirs, files in os.walk("."):
        # print("【root】:", root)
        # print("【文件夹】:", dirs)
        # print("【文件】:", files)
        # print("-"*20)
        for name in files:
            print(os.path.join(root, name))
        for name in dirs:
            print(os.path.join(root, name))
def traversal_scandirs(path):
    # 递归遍历目录 candirs
    for item in os.scandir(path):
        print(item.path)
        if item.is_dir():
            traversal_scandirs(item.path)
if __name__ == "__main__":
    # NO1:只可以遍历当前目录下的文件与文件夹
    print("="*20, "traversal_dirs,结果如下:")
    traversal_dirs(".")
    # NO2:遍历选择的目录下所有文件夹与文件
    print("="*20, "untraversal_walk,结果如下:")
    untraversal_walk(".")
    # NO3:只可以遍历当前目录下的文件与文件夹
    print("="*20, "traversal_scandirs,结果如下:")
    traversal_scandirs(".")

最后,执行python main.py,结果输出:

PS D:\Mine\PythonWork\k001_dir> python main.py
==================== traversal_dirs,结果如下:
.\0.txt
.\main.py
.\父目录
.\父目录\1.txt
.\父目录\子目录
.\父目录\子目录\21.txt
.\父目录\子目录\22.txt
.\父目录\子目录\23.txt
.\父目录\子目录\孙目录
.\父目录\子目录\孙目录\31.txt
.\父目录\子目录\孙目录\32.txt
==================== untraversal_walk,结果如下:
.\0.txt
.\main.py
.\父目录
.\父目录\1.txt
.\父目录\子目录
.\父目录\子目录\21.txt
.\父目录\子目录\22.txt
.\父目录\子目录\23.txt
.\父目录\子目录\孙目录
.\父目录\子目录\孙目录\31.txt
.\父目录\子目录\孙目录\32.txt
==================== traversal_scandirs,结果如下:
.\0.txt
.\main.py
.\父目录
.\父目录\1.txt
.\父目录\子目录
.\父目录\子目录\21.txt
.\父目录\子目录\22.txt
.\父目录\子目录\23.txt
.\父目录\子目录\孙目录
.\父目录\子目录\孙目录\31.txt
.\父目录\子目录\孙目录\32.txt

到此这篇关于浅析Python3中遍历目录的三种方法的文章就介绍到这了,更多相关Python3遍历目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解析pandas apply() 函数用法(推荐)

    解析pandas apply() 函数用法(推荐)

    这篇文章主要介绍了pandas apply() 函数用法,大家需要掌握函数作为一个对象,能作为参数传递给其它函数,也能作为函数的返回值,具体内容详情跟随小编一起看看吧
    2021-10-10
  • Django Rest framework三种分页方式详解

    Django Rest framework三种分页方式详解

    这篇文章主要介绍了Django Rest framework三种分页方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python enumerate遍历数组示例应用

    Python enumerate遍历数组示例应用

    遍历数组的python代码
    2008-09-09
  • 使用pygame实现垃圾分类小游戏功能(已获校级二等奖)

    使用pygame实现垃圾分类小游戏功能(已获校级二等奖)

    这篇文章主要介绍了使用pygame实现垃圾分类小游戏功能(已获校级二等奖),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • python爬取网站数据保存使用的方法

    python爬取网站数据保存使用的方法

    这篇文章主要介绍了使用Python从网上爬取特定属性数据保存的方法,其中解决了编码问题和如何使用正则匹配数据的方法,详情看下文
    2013-11-11
  • 使用django实现一个代码发布系统

    使用django实现一个代码发布系统

    这篇文章主要介绍了使用django实现一个代码发布系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python爬取求职网requests库和BeautifulSoup库使用详解

    Python爬取求职网requests库和BeautifulSoup库使用详解

    这篇文章主要为大家介绍了Python爬取求职网及其他网页时requests库和BeautifulSoup库的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • python编程使用PyQt制作预览窗口游戏中的小地图

    python编程使用PyQt制作预览窗口游戏中的小地图

    这篇文章主要为大家介绍了python使用PyQt制作预览窗口游戏中的小地图实现示例过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • django实现模板中的字符串文字和自动转义

    django实现模板中的字符串文字和自动转义

    这篇文章主要介绍了django实现模板中的字符串文字和自动转义,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python读取npy文件数据实例

    python读取npy文件数据实例

    npy文件用于存储重建ndarray所需的数据、图形、dtype 和其他信息,下面这篇文章主要给大家介绍了关于python读取npy文件数据的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论