Python 如何获取文件夹下所有文件

Python 如何获取文件夹下所有文件

Python 如何获取文件夹下所有文件

简介

Python 编程中,经常需要对一个文件夹下的所有文件进行操作,例如遍历文件列表、读取文件内容、复制或移动文件等。然而,如何快速地获取文件夹下的所有文件呢?本文将介绍几种不同的方法来实现这一功能。

方法一:使用 os 模块

Pythonos 模块提供了一些与操作系统交互的函数,其中的 listdir 函数可以用来获取指定路径下的所有文件和文件夹。下面是一个示例代码:

import os

def get_all_files(folder_path):
    file_list = []
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):
            file_list.append(file_path)
    return file_list

在上面的代码中,get_all_files 函数接受一个文件夹路径作为参数,并返回该文件夹下所有的文件路径列表。首先,我们使用 os.listdir 函数获取指定文件夹下的所有文件和文件夹名称列表。然后,通过 os.path.join 函数将文件夹路径和文件(或文件夹)名称连接起来,得到完整的文件(或文件夹)路径。最后,通过 os.path.isfile 函数判断该路径是否为一个文件,如果是文件,则将其添加到 file_list 列表中。

以下是使用上述代码获取文件夹下所有文件的示例:

folder_path = '/path/to/folder'
all_files = get_all_files(folder_path)
for file_path in all_files:
    print(file_path)

输出结果类似于:

/path/to/folder/file1.txt
/path/to/folder/file2.docx
/path/to/folder/subfolder/file3.jpg
...

方法二:使用 glob 模块

Python 的 glob 模块提供了一个函数 glob,可以根据指定的路径模式匹配文件路径。下面是一个示例代码:

import glob

def get_all_files(folder_path):
    file_list = glob.glob(folder_path + '/**/*', recursive=True)
    return file_list

在上面的代码中,get_all_files 函数接受一个文件夹路径作为参数,并返回该文件夹下所有的文件路径列表。通过使用 glob.glob 函数,我们可以通过指定的路径模式 folder_path + '/**/*' 来匹配文件夹下的所有文件和文件夹。其中 '**' 表示匹配任意多级子文件夹,'*' 表示匹配当前级别的文件和文件夹。

以下是使用上述代码获取文件夹下所有文件的示例:

folder_path = '/path/to/folder'
all_files = get_all_files(folder_path)
for file_path in all_files:
    print(file_path)

输出结果类似于:

/path/to/folder/file1.txt
/path/to/folder/file2.docx
/path/to/folder/subfolder/file3.jpg
...

方法三:使用 Path 对象(Python 3.4+)

Python 3.4 引入了一个新的模块,名为 pathlib,提供了一个更面向对象的方式来操作文件系统路径。使用 Path 对象,可以更简洁地获取文件夹下的所有文件。下面是一个示例代码:

from pathlib import Path

def get_all_files(folder_path):
    file_list = [str(file) for file in Path(folder_path).rglob('*')]
    return file_list

在上面的代码中,get_all_files 函数接受一个文件夹路径作为参数,并返回该文件夹下所有的文件路径列表。首先,使用 Path 函数创建一个 Path 对象,传入文件夹路径作为参数。然后,通过调用 rglob 方法,并传入 '*' 作为通配符参数,可以递归地遍历文件夹下的所有文件和文件夹。最后,通过列表推导式将 Path 对象转换为字符串路径,并将其添加到 file_list 列表中。

以下是使用上述代码获取文件夹下所有文件的示例:

folder_path = '/path/to/folder'
all_files = get_all_files(folder_path)
for file_path in all_files:
    print(file_path)

输出结果类似于:

/path/to/folder/file1.txt
/path/to/folder/file2.docx
/path/to/folder/subfolder/file3.jpg
...

总结

本文介绍了三种不同的方法来获取文件夹下的所有文件。使用 os 模块的 listdir 函数可以实现基本的文件获取功能,但需要手动判断每个路径是否为文件。使用 glob 模块的 glob 函数可以更方便地匹配文件路径,支持通配符模式。使用 pathlib 模块的 Path 对象可以提供更简洁的面向对象的方式来操作文件系统路径。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程