在Python编程中,经常需要遍历目录来查找、读取或处理文件 。本文将介绍4种Python遍历目录的方法,分别是os模块、glob模块、os.walk()函数和pathlib模块 。这些方法均可用于遍历目录和子目录,每种方法都有其优缺点和适用场景 。
一、os模块
文章插图
os模块是Python内置的用于访问操作系统功能的模块,其中包含了许多常用的文件和目录操作函数 。os模块中的listdir()函数可以列出指定目录下的所有文件和目录,而isdir()和isfile()函数则可以判断给定路径是文件还是目录 。通过这些函数的组合,可以实现对目录的遍历 。下面是一个简单的实例:
```
import os
def traverse_dir(path):
for file_name in os.listdir(path):
abs_path = os.path.join(path, file_name)
if os.path.isdir(abs_path):
print("目录:", abs_path)
traverse_dir(abs_path)
else:
print("文件:", abs_path)
```
该函数使用递归的方式遍历目录及其子目录,如果是目录,则继续遍历,否则输出文件路径 。需要注意的是,遍历过程中可能会出现权限不足或文件损坏等异常,需要添加异常处理机制 。
二、glob模块
glob模块是Python提供的一个用于匹配文件路径的模块,其主要用途是根据通配符模式搜索指定目录下的文件 。与os模块相比,glob模块更加灵活,可以实现更复杂的文件搜索操作 。下面是一个简单的实例:
```
import glob
def traverse_dir(path):
for file_path in glob.glob(path + "/**", recursive=True):
if glob.os.path.isdir(file_path):
print("目录:", file_path)
else:
print("文件:", file_path)
```
该函数使用glob.glob()函数搜索指定目录下的所有文件和目录,并添加了recursive=True参数以支持对子目录的搜索 。如果搜索到的文件路径是目录,则输出目录路径,否则输出文件路径 。
三、os.walk()函数
os.walk()函数是Python内置的用于遍历目录树的函数,它返回一个三元组,包含当前目录路径、当前目录下所有子目录的路径和当前目录下所有文件的路径 。下面是一个简单的实例:
```
import os
def traverse_dir(path):
for root, dirs, files in os.walk(path):
for file_name in files:
print("文件:", os.path.join(root, file_name))
for dir_name in dirs:
print("目录:", os.path.join(root, dir_name))
```
该函数使用os.walk()函数遍历指定目录及其子目录,并输出所有文件和目录的路径 。需要注意的是,os.walk()函数的第二个返回值dirs是一个列表,包含当前目录下所有子目录的名称,可以通过修改dirs列表来控制遍历的范围 。
四、pathlib模块
pathlib模块是Python 3.4版本新增的一个用于处理文件路径的模块,它提供了一种更加面向对象的方式来操作文件和目录 。pathlib模块中的Path类可以表示文件路径,其提供了多种方法用于操作文件和目录 。下面是一个简单的实例:
```
import pathlib
def traverse_dir(path):
path_obj = pathlib.Path(path)
for file_path in path_obj.glob("**"):
if file_path.is_dir():
print("目录:", file_path)
else:
print("文件:", file_path)
```
该函数使用pathlib.Path类和glob()方法遍历指定目录及其子目录,并输出所有文件和目录的路径 。需要注意的是,pathlib模块需要Python 3.4及以上版本才能使用 。
【Python遍历目录的4种方法实例介绍】综上所述,Python遍历目录的4种方法分别是os模块、glob模块、os.walk()函数和pathlib模块 。os模块和glob模块适用于简单的文件搜索和处理,os.walk()函数适用于遍历整个目录树,而pathlib模块则提供了一种更加面向对象的方式来操作文件和目录 。选择合适的方法可以提高代码的可读性和效率 。
推荐阅读
- 在Python程序中操作文件之isatty方法的使用教程
- python引用其他py文件的函数
- 如何实现python中format函数保留指定位数的小数?
- python matplotlib画盒图、子图解决坐标轴标签重叠的问题
- python为什么会环境变量设置不成功
- python比较两个字符串的大小
- python字典删除键值对
- python降级
- python实现简单ftp客户端的方法
- 详解Python中内置的NotImplemented类型的用法