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

在日常的数据处理和分析工作中,经常需要对文件夹中的多个文件进行批量处理。而Python作为一门功能强大的编程语言,提供了丰富的库和方法来实现这一功能。本文将介绍如何使用Python循环读取文件夹中的文件,并给出相应的代码示例。

1. 准备工作

在开始使用Python循环读取文件夹之前,我们需要先创建一个包含多个文件的文件夹。假设我们有一个名为"files"的文件夹,里面包含了一些文本文件(.txt)和一些Excel文件(.xlsx)。我们的目标是使用Python逐个读取这些文件,并进行相应的处理。

2. 使用os库进行文件操作

在Python中,我们可以使用os库来进行文件和目录的操作。os库提供了许多方法来获取文件夹中的文件列表,并对文件进行判断和处理。首先,我们需要导入os库:

import os

3. 获取文件夹中的文件列表

使用os库中的listdir方法,我们可以获取文件夹中的所有文件,并以列表的形式返回。接下来,我们使用listdir方法获取文件夹中的所有文件:

folder_path = 'files'  # 文件夹路径
files = os.listdir(folder_path)  # 获取文件夹中的所有文件

files将会是一个包含文件名的列表。我们可以通过遍历这个列表来逐个读取文件。

4. 循环读取文件并进行处理

在循环读取文件之前,我们需要判断文件的类型,以便进行相应的处理。在本例中,我们将分别处理文本文件和Excel文件。

首先,我们需要导入相关的库:

import pandas as pd  # 导入pandas库用于处理Excel文件

4.1 处理文本文件

对于文本文件,我们可以使用Python内置的文件操作功能。下面是一个读取文本文件并打印内容的示例代码:

for file in files:
    if file.endswith('.txt'):  # 判断文件是否为文本文件
        file_path = os.path.join(folder_path, file)  # 文件路径
        with open(file_path, 'r') as f:  # 以只读方式打开文件
            content = f.read()  # 读取文件内容
        print(content)  # 打印文件内容

4.2 处理Excel文件

对于Excel文件,我们可以使用pandas库来读取和处理。pandas库提供了read_excel方法,可以方便地读取Excel文件并转换为DataFrame对象。

下面是一个读取Excel文件并显示数据的示例代码:

for file in files:
    if file.endswith('.xlsx'):  # 判断文件是否为Excel文件
        file_path = os.path.join(folder_path, file)  # 文件路径
        df = pd.read_excel(file_path)  # 读取Excel文件
        print(df)  # 打印Excel数据

5. 完整代码示例

下面是一个完整的示例代码,包括获取文件夹中的文件列表、循环读取文件并进行处理的代码:

import os
import pandas as pd

folder_path = 'files'  # 文件夹路径
files = os.listdir(folder_path)  # 获取文件夹中的所有文件

for file in files:
    if file.endswith('.txt'):  # 判断文件是否为文本文件
        file_path = os.path.join(folder_path, file)  # 文件路径
        with open(file_path, 'r') as f:  # 以只读方式打开文件
            content = f.read()  # 读取文件内容
        print(content)  # 打印文件内容

    if file.endswith('.xlsx'):  # 判断文件是否为Excel文件
        file_path = os.path.join(folder_path, file)  # 文件路径
        df = pd.read_excel(file_path)  # 读取Excel文件
        print(df)  # 打印Excel数据

6. 流程图

以下是使用mermaid语法绘制的流程图,展示了循环读取文件夹中文件的过程:

flowchart TD