本文将从多个角度阐述Python递归读取文件夹文件内容的方法。
一、基本概念
在开始代码编写之前,我们需要了解递归与文件夹的基本概念。
递归是指一个函数在内部调用自身,形成一个递归函数。在文件夹中,递归指的是在一个文件夹内遍历所有的子文件夹和文件。
二、文件遍历
Python提供了os模块来操作文件和文件夹。我们可以使用os.walk()函数来遍历一个文件夹内的所有文件和子文件夹。
import os
def traverse_folder(path):
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
with open(file_path, 'r') as f:
content = f.read()
# 对文件内容进行处理
traverse_folder("example_folder")
使用os.walk()函数可以遍历整个文件夹,并返回根目录、子文件夹、文件三个参数。我们可以再次使用os.path.join()函数将文件夹和文件名连接起来得到文件的完整路径。
三、递归遍历
如果文件夹中还有其他子文件夹,则需要使用递归来遍历子文件夹。
import os
def traverse_folder(path):
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
with open(file_path, 'r') as f:
content = f.read()
# 对文件内容进行处理
for dir_name in dirs:
traverse_folder(os.path.join(root, dir_name))
traverse_folder("example_folder")
在代码中,我们使用了一个for循环遍历每一个文件夹,并再次调用traverse_folder()函数进行遍历。这样就可以无限遍历子文件夹。
四、筛选文件类型
如果我们只需要遍历某个特定类型的文件,可以使用字符串.endswith()方法来筛选文件。
import os
def traverse_folder(path):
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".txt"): # 筛选.txt文件
file_path = os.path.join(root, file)
with open(file_path, 'r') as f:
content = f.read()
# 对txt文件内容进行处理
for dir_name in dirs:
traverse_folder(os.path.join(root, dir_name))
traverse_folder("example_folder")
五、总结
使用Python递归遍历文件夹,可以方便地从文件夹中获取所有的文件和子文件夹。我们可以灵活运用os模块提供的函数,根据自己的需要处理文件内容。