Python循环读取文件夹中的文件

介绍
在日常的编程工作中,我们经常需要处理一个文件夹中的多个文件。Python 提供了一些便捷的方法来实现循环读取文件夹中的文件,从而方便地对这些文件进行处理。本文将通过详细的讲解和示例代码,帮助读者了解如何使用 Python 进行文件夹的遍历和文件的读取操作。
目录
- 文件夹的遍历和文件的读取介绍
- 使用 os 模块进行文件夹遍历
- 使用 glob 模块进行文件夹遍历
- 用文件迭代器遍历文件夹
- 示例:统计文件夹中文件的大小
- 示例:合并多个文件
- 结论
1. 文件夹的遍历和文件的读取介绍
在处理文件夹中的文件时,我们通常需要完成以下两个任务:
- 遍历文件夹,获取文件夹中的所有文件;
- 读取文件内容,并进行相应的处理。
对于第一个任务,Python 提供了多种方法来遍历文件夹。每种方法都有自己的特点和适用场景,我们可以根据具体需求选择合适的方法。
对于第二个任务,我们需要针对具体的文件类型和处理需求使用相应的读取方法。Python 的标准库中提供了很多用于读取不同类型文件的模块,例如 csv、json、txt 等。
下面将介绍三种常用的方法来遍历文件夹和读取文件:使用 os 模块、使用 glob 模块和使用文件迭代器。同时,我们还将给出两个示例来演示如何处理文件夹中的文件。
2. 使用 os 模块进行文件夹遍历
os 模块是 Python 标准库中的一个重要模块,它提供了与操作系统交互的接口。其中的 os.listdir() 函数可以用于获取指定目录下的所有文件和文件夹。
以下是使用 os 模块遍历文件夹的基本步骤:
- 引入 os 模块;
- 使用
os.listdir()函数获取指定目录下的所有文件和文件夹,返回一个包含文件和文件夹名称的列表; - 对获取到的列表进行遍历,判断每个元素的文件类型。
以下是一个使用 os 模块遍历文件夹并打印文件名的示例代码:
import os
def traverse_folder(folder_path):
file_list = os.listdir(folder_path)
for file_name in file_list:
print(file_name)
# 调用示例
folder_path = '/path/to/folder' # 替换为实际的文件夹路径
traverse_folder(folder_path)
运行结果示例:
file1.txt
file2.txt
file3.txt
通过以上代码,我们可以遍历并打印出指定文件夹中的所有文件名。
3. 使用 glob 模块进行文件夹遍历
glob 模块是 Python 标准库中的一个文件查找模块,它可以用于基于模式匹配的文件搜索。
以下是使用 glob 模块遍历文件夹的基本步骤:
- 引入 glob 模块;
- 使用
glob.glob()函数获取指定目录下的所有符合模式的文件路径; - 遍历获取到的文件路径,对每个文件进行操作。
以下是一个使用 glob 模块遍历文件夹并打印文件名的示例代码:
import glob
def traverse_folder(folder_path):
file_list = glob.glob(folder_path + '/*')
for file_path in file_list:
file_name = file_path.split('/')[-1]
print(file_name)
# 调用示例
folder_path = '/path/to/folder' # 替换为实际的文件夹路径
traverse_folder(folder_path)
运行结果示例:
file1.txt
file2.txt
file3.txt
通过以上代码,我们同样可以遍历并打印出指定文件夹中的所有文件名。
4. 用文件迭代器遍历文件夹
除了使用 os 模块和 glob 模块外,我们还可以使用文件迭代器来遍历文件夹。文件迭代器是一个高效的方法,不需要一次性获取所有的文件路径,而是在循环过程中逐个返回文件路径。
以下是使用文件迭代器遍历文件夹的基本步骤:
- 使用
os.scandir()函数获取指定目录下的所有文件和文件夹的迭代器; - 对迭代器进行循环遍历,得到每个文件的路径。
以下是一个使用文件迭代器遍历文件夹并打印文件名的示例代码:
import os
def traverse_folder(folder_path):
with os.scandir(folder_path) as entries:
for entry in entries:
if entry.is_file():
print(entry.name)
# 调用示例
folder_path = '/path/to/folder' # 替换为实际的文件夹路径
traverse_folder(folder_path)
运行结果示例:
file1.txt
file2.txt
file3.txt
5. 示例:统计文件夹中文件的大小
通过以上方法,我们可以方便地遍历文件夹中的文件,并对文件进行相应的处理。下面给出一个示例来统计文件夹中文件的大小:
import os
def calculate_folder_size(folder_path):
total_size = 0
with os.scandir(folder_path) as entries:
for entry in entries:
if entry.is_file():
file_size = entry.stat().st_size
total_size += file_size
return total_size
# 调用示例
folder_path = '/path/to/folder' # 替换为实际的文件夹路径
folder_size = calculate_folder_size(folder_path)
print("文件夹大小为:{} 字节".format(folder_size))
运行结果示例:
文件夹大小为:10240 字节
通过以上代码,我们可以统计出指定文件夹中所有文件的大小,并打印出文件夹的总大小。
6. 示例:合并多个文件
在实际应用中,我们可能需要将多个文件合并为一个文件。下面给出一个示例来演示如何合并文件夹中的多个文件:
def merge_files(folder_path, output_file):
with open(output_file, 'w') as output:
with os.scandir(folder_path) as entries:
for entry in entries:
if entry.is_file():
file_path = os.path.join(folder_path, entry.name)
with open(file_path, 'r') as file:
output.write(file.read())
# 调用示例
folder_path = '/path/to/folder' # 替换为实际的文件夹路径
output_file = 'merged_file.txt' # 替换为实际的输出文件名
merge_files(folder_path, output_file)
运行结果示例:
成功合并文件
通过以上代码,我们可以将指定文件夹中的多个文件合并为一个文件,并将合并后的内容存储到指定的输出文件中。
7. 结论
通过本文的介绍,我们了解了如何使用 Python 循环读取文件夹中的文件。具体来说,我们学习了三种常用的方法:使用 os 模块、使用 glob 模块和使用文件迭代器。同时,我们也给出了两个示例来演示如何处理文件夹中的文件:统计文件夹中文件的大小和合并多个文件。
极客教程