Python 文件夹遍历方法
1. 引言
在Python中,文件夹(也被称为目录)是一种常见的文件组织方式。在处理文件和文件夹时,我们经常需要遍历文件夹来执行特定的操作,比如查找特定类型的文件,复制或移动文件,统计文件数量等。本文将介绍几种在Python中遍历文件夹的常用方法。
2. 使用os模块
Python的标准库中的os
模块提供了很多操作文件和目录的函数。下面是使用os
模块遍历文件夹的一种方法:
import os
def traverse_folder(folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
# 执行特定的操作,比如打印文件路径
print(file_path)
上述代码中,os.walk()
函数可递归遍历指定路径下的所有子目录和文件,root
表示当前目录路径,dirs
表示当前路径下的子目录列表,files
表示当前路径下的文件列表。通过使用os.path.join()
函数,我们可以将当前目录路径和文件名连接起来,得到文件的完整路径。
在这个方法中,我们可以根据需要进行特定的操作,比如打印文件路径、复制文件、删除文件等。你可以根据具体情况自行编写操作代码。
3. 使用pathlib模块
Python 3.4引入的pathlib
模块提供了一种更简洁和面向对象的方式来操作文件和目录。使用pathlib
模块遍历文件夹的方法如下:
from pathlib import Path
def traverse_folder(folder_path):
folder = Path(folder_path)
for file in folder.glob('**/*'):
if file.is_file():
# 执行特定的操作,比如打印文件路径
print(file)
上述代码中,我们首先创建了一个Path
对象,该对象表示一个文件夹路径。然后,我们使用glob()
函数来递归遍历文件夹中的所有子目录和文件,并返回一个生成器对象。通过迭代这个生成器对象,我们可以得到文件的完整路径。使用is_file()
方法可以判断文件是否为普通文件,以排除目录路径。
和使用os
模块相比,pathlib
模块提供了一种更加直观和面向对象的方式来进行文件和目录操作,代码更加简洁易读。
4. 使用glob模块
除了使用os
模块和pathlib
模块,我们还可以使用Python的glob
模块来实现文件夹遍历。glob
模块提供了一种简单的通配符方式来查找文件和目录。下面是使用glob
模块遍历文件夹的方法:
import glob
def traverse_folder(folder_path):
files = glob.glob(folder_path + '/**/*', recursive=True)
for file in files:
if os.path.isfile(file):
# 执行特定的操作,比如打印文件路径
print(file)
上述代码中,glob.glob()
函数采用了类似于正则表达式的通配符方式来匹配文件和目录。folder_path + '/**/*'
表示递归匹配所有的子目录和文件。通过使用os.path.isfile()
函数来判断文件是否为普通文件。
需要注意的是,在使用glob.glob()
函数时,我们需要设置recursive
参数为True
,以支持递归查找。
5. 使用os.scandir()方法
Python 3.5引入的os.scandir()
方法提供了一种更快速的遍历文件和目录的方式。可以使用以下代码使用os.scandir()
方法遍历文件夹:
import os
def traverse_folder(folder_path):
for entry in os.scandir(folder_path):
if entry.is_file():
# 执行特定的操作,比如打印文件路径
print(entry.path)
上述代码中,os.scandir()
函数返回一个迭代器,它生成目录中的DirEntry
对象。通过迭代这个迭代器,我们可以得到文件的完整路径。使用is_file()
方法可以判断文件是否为普通文件。
相比于os.walk()
和glob.glob()
函数,os.scandir()
方法更加高效,因为它直接返回一个目录中的文件和子目录的迭代器对象,而不是遍历整个目录。
6. 总结
本文介绍了Python中几种常用的遍历文件夹的方法,包括使用os
模块、pathlib
模块、glob
模块和os.scandir()
方法。这些方法都可以轻松地遍历文件夹,并执行特定的操作。你可以根据具体情况选择合适的方法来处理文件和目录。