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

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

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

介绍

在日常的编程工作中,我们经常需要处理一个文件夹中的多个文件。Python 提供了一些便捷的方法来实现循环读取文件夹中的文件,从而方便地对这些文件进行处理。本文将通过详细的讲解和示例代码,帮助读者了解如何使用 Python 进行文件夹的遍历和文件的读取操作。

目录

  1. 文件夹的遍历和文件的读取介绍
  2. 使用 os 模块进行文件夹遍历
  3. 使用 glob 模块进行文件夹遍历
  4. 用文件迭代器遍历文件夹
  5. 示例:统计文件夹中文件的大小
  6. 示例:合并多个文件
  7. 结论

1. 文件夹的遍历和文件的读取介绍

在处理文件夹中的文件时,我们通常需要完成以下两个任务:

  • 遍历文件夹,获取文件夹中的所有文件;
  • 读取文件内容,并进行相应的处理。

对于第一个任务,Python 提供了多种方法来遍历文件夹。每种方法都有自己的特点和适用场景,我们可以根据具体需求选择合适的方法。

对于第二个任务,我们需要针对具体的文件类型和处理需求使用相应的读取方法。Python 的标准库中提供了很多用于读取不同类型文件的模块,例如 csv、json、txt 等。

下面将介绍三种常用的方法来遍历文件夹和读取文件:使用 os 模块、使用 glob 模块和使用文件迭代器。同时,我们还将给出两个示例来演示如何处理文件夹中的文件。

2. 使用 os 模块进行文件夹遍历

os 模块是 Python 标准库中的一个重要模块,它提供了与操作系统交互的接口。其中的 os.listdir() 函数可以用于获取指定目录下的所有文件和文件夹。

以下是使用 os 模块遍历文件夹的基本步骤:

  1. 引入 os 模块;
  2. 使用 os.listdir() 函数获取指定目录下的所有文件和文件夹,返回一个包含文件和文件夹名称的列表;
  3. 对获取到的列表进行遍历,判断每个元素的文件类型。

以下是一个使用 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 模块遍历文件夹的基本步骤:

  1. 引入 glob 模块;
  2. 使用 glob.glob() 函数获取指定目录下的所有符合模式的文件路径;
  3. 遍历获取到的文件路径,对每个文件进行操作。

以下是一个使用 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 模块外,我们还可以使用文件迭代器来遍历文件夹。文件迭代器是一个高效的方法,不需要一次性获取所有的文件路径,而是在循环过程中逐个返回文件路径。

以下是使用文件迭代器遍历文件夹的基本步骤:

  1. 使用 os.scandir() 函数获取指定目录下的所有文件和文件夹的迭代器;
  2. 对迭代器进行循环遍历,得到每个文件的路径。

以下是一个使用文件迭代器遍历文件夹并打印文件名的示例代码:

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 模块和使用文件迭代器。同时,我们也给出了两个示例来演示如何处理文件夹中的文件:统计文件夹中文件的大小和合并多个文件。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程