Python遍历文件夹

Python遍历文件夹

Python遍历文件夹

概述

在编程过程中,我们经常需要处理文件和文件夹。而对于文件夹的操作,如何快速、有效地遍历文件夹中的文件,是一个常见的需求。Python提供了多种方法来遍历文件夹,方便进行文件操作。

在本文中,我们将介绍Python中常用的三种方法来遍历文件夹,分别是使用os模块、使用os.walk()函数和使用glob模块。同时,我们还会讲解如何对文件进行筛选和过滤,以及如何获取文件的属性信息。

为了更好地说明这些方法,我们将结合实际的示例来演示它们的用法。

使用os模块遍历文件夹

Python的os模块提供了一系列操作文件和目录的函数。其中,os.listdir(path)函数用于获取指定路径下的所有文件和文件夹的名称列表。

以下是一个示例代码,演示了如何使用os.listdir()函数遍历文件夹中的文件:

import os

# 指定文件夹路径
folder_path = 'C:/users'

# 遍历文件夹
for file_name in os.listdir(folder_path):
    # 拼接文件的完整路径
    file_path = os.path.join(folder_path, file_name)

    if os.path.isfile(file_path):
        print("文件:", file_path)
    elif os.path.isdir(file_path):
        print("文件夹:", file_path)

上述示例代码中,我们首先指定了一个文件夹路径folder_path,然后使用os.listdir()来获取该文件夹下的所有文件和文件夹。接着,我们使用os.path.join()函数拼接文件的完整路径,并使用os.path.isfile()os.path.isdir()函数判断文件类型并打印相应的信息。

运行上述代码,可以得到以下输出:

文件夹: C:/users/Administrator
文件夹: C:/users/Public
文件夹: C:/users/Guest
文件: C:/users/desktop.ini
文件夹: C:/users/All Users
...

这样,我们就成功地遍历了文件夹C:/users中的所有文件和文件夹。

使用os.walk()函数遍历文件夹

除了os.listdir()函数外,Python的os模块还提供了一个更为方便的函数os.walk()用于遍历文件夹中的所有文件和子文件夹。

以下是一个示例代码,演示了如何使用os.walk()函数遍历文件夹中的文件:

import os

# 指定文件夹路径
folder_path = 'C:/users'

# 遍历文件夹
for root, dirs, files in os.walk(folder_path):
    for file_name in files:
        file_path = os.path.join(root, file_name)
        print("文件:", file_path)

    for dir_name in dirs:
        dir_path = os.path.join(root, dir_name)
        print("文件夹:", dir_path)

上述示例代码中,我们使用os.walk()函数来遍历文件夹C:/users中的所有文件和子文件夹。函数的返回值是一个三元组(root, dirs, files),其中root表示正在遍历的文件夹路径,dirs表示当前文件夹中的子文件夹列表,files表示当前文件夹中的文件列表。

注意,在遍历文件夹时,os.walk()函数是以深度优先的方式进行遍历。

运行上述代码,可以得到与前述方法相同的输出。

使用glob模块遍历文件夹

另外一个常用的遍历文件夹的方法是使用glob模块。glob模块提供了基于通配符的文件搜索函数,可以方便地筛选和匹配文件。

以下是一个示例代码,演示了如何使用glob模块遍历文件夹中的文件:

import glob

# 指定文件夹路径
folder_path = 'C:/users'

# 遍历文件夹
for file_path in glob.glob(folder_path + '/**', recursive=True):
    if glob.os.path.isfile(file_path):
        print("文件:", file_path)
    elif glob.os.path.isdir(file_path):
        print("文件夹:", file_path)

上述示例代码中,我们使用glob.glob()函数来获取文件夹C:/users中的所有文件和文件夹。通过设置recursive=True参数,可以递归地遍历文件夹下的所有子文件夹。

同样地,我们使用os.path.isfile()os.path.isdir()函数判断文件类型并打印相应的信息。

使用glob模块遍历文件夹与使用os.listdir()函数类似,不同之处在于glob.glob()使用了通配符的方式来匹配文件。例如,上述代码中的'C:/users/**'表示匹配文件夹C:/users及其所有的子文件夹。

文件筛选和过滤

在实际的应用中,我们经常需要根据一定的条件对文件进行筛选和过滤。下面将演示如何使用以上三种方法对文件进行筛选。

以仅遍历某些特定文件类型的文件为例,我们可以根据文件扩展名来进行筛选。

以下是一个示例代码,演示了如何仅遍历某些特定文件类型的文件:

import os

# 指定文件夹路径
folder_path = 'C:/users'

# 遍历文件夹
for file_name in os.listdir(folder_path):
    file_path = os.path.join(folder_path, file_name)

    if os.path.isfile(file_path) and file_name.endswith('.txt'):
        print("文件:", file_path)

上述示例代码中,我们使用file_name.endswith('.txt')来筛选以.txt为扩展名的文件。

同样地,我们可以在os.walk()glob.glob()中添加条件语句,以实现对文件的筛选。

获取文件属性信息

除了遍历文件夹中的文件,有时候我们还需要获取文件的一些属性信息,如文件大小、创建时间等。

以下是一个示例代码,演示了如何获取文件的属性信息:

import os
import time

# 指定文件夹路径
folder_path = 'C:/users'

# 遍历文件夹
for file_name in os.listdir(folder_path):
    file_path = os.path.join(folder_path, file_name)

    if os.path.isfile(file_path):
        file_size = os.path.getsize(file_path)
        file_ctime = os.path.getctime(file_path)
        file_mtime = os.path.getmtime(file_path)

        print("文件:", file_path)
        print("大小:", file_size, "bytes")
        print("创建时间:", time.ctime(file_ctime))
        print("修改时间:", time.ctime(file_mtime))

上述示例代码中,我们使用os.path.getsize()函数获取文件的大小,使用os.path.getctime()函数获取文件的创建时间,使用os.path.getmtime()函数获取文件的修改时间。

同时,我们使用time.ctime()函数将时间戳转换为可读的时间格式。

运行上述代码,可以得到以下输出:

文件: C:/users/desktop.ini
大小: 282 bytes
创建时间: Fri Jun 12 15:42:30 2020
修改时间: Thu Jan 10 19:22:34 2019
...

通过以上代码,我们成功地获取了文件的大小、创建时间和修改时间等属性信息。

总结

本文详细介绍了在Python中遍历文件夹的三种常用方法:使用os.listdir()函数、使用os.walk()函数和使用glob模块。同时,我们还讲解了如何对文件进行筛选和过滤,以及如何获取文件的属性信息。

通过这些方法,我们可以快速有效地遍历文件夹中的文件,方便进行文件操作和数据处理。

在实际应用中,根据具体需求选择合适的方法进行文件遍历,并根据需要进行文件筛选、属性获取等操作,从而更好地完成文件处理任务。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程