浅析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遍历目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python 如何用 Hypothesis 来自动化单元测试
这篇文章主要介绍了python 如何用 Hypothesis 来自动化单元测试,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下2021-03-03python机器学习deepchecks库训练检查模型特点探索
这篇文章主要介绍了python机器学习deepchecks库的训练检查模型特点实例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2024-01-01python taipy库轻松地将数据和机器学习模型转为功能性Web应用
taipy 是一个开源的 Python 库,任何具有基本 Python 技能的人都可以使用,对于数据科学家、机器学习工程师和 Python 程序员来说,它是一个方便的工具,借助 Taipy,你可以轻松地将数据和机器学习模型转变为功能性的 Web 应用程序2024-01-01linux mint中搜狗输入法导致pycharm卡死的问题
这篇文章主要介绍了linux mint中搜狗输入法导致pycharm卡死的问题,这篇文章给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10Python处理RSS、ATOM模块FEEDPARSER介绍
这篇文章主要介绍了Python处理RSS、ATOM模块FEEDPARSER介绍,本文只是做个入门级的简洁介绍,需要的朋友可以参考下2015-02-02Pytorch基本变量类型FloatTensor与Variable用法
今天小编就为大家分享一篇Pytorch基本变量类型FloatTensor与Variable用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-01-01python 下 CMake 安装配置 OPENCV 4.1.1的方法
这篇文章主要介绍了python 下 CMake 安装配置 OPENCV 4.1.1的方法,文中给大家提到了CMake 安装配置 OPENCV 4.1.1 解决各种问题,需要的朋友可以参考下2019-09-09
最新评论