Python获取指定文件夹下的所有文件名

引言

在编程过程中,我们经常需要获取指定文件夹下的所有文件名。通常我们会使用os模块来实现这个功能,但是本文将介绍一种不使用os模块的方法来获取指定文件夹下的所有文件名。

流程图

flowchart TD
    A[开始] --> B(导入必要的模块)
    B --> C(定义一个函数get_files)
    C --> D(接受一个文件夹路径参数)
    D --> E(初始化一个空列表)
    E --> F(遍历文件夹中的所有文件和子文件夹)
    F --> G(对于每个文件或者子文件夹)
    G --> H(如果是文件)
    H --> I(将文件名加入列表)
    G --> J(否则)
    J --> K(递归调用get_files函数)
    K --> F
    F --> L(返回文件名列表)
    L --> M(打印文件名列表)
    M --> N[结束]

类图

classDiagram
    class Developer{
        +get_files(folder_path: str) -> List[str]
    }

代码实现

首先,我们需要导入必要的模块来实现我们的功能。本文中只需要使用os模块来判断文件类型。

import os

接下来,我们定义一个函数get_files,这个函数接受一个文件夹路径作为参数,并返回一个包含所有文件名的列表。

def get_files(folder_path):
    file_names = []  # 初始化一个空列表
    for item in os.listdir(folder_path):  # 遍历文件夹中的所有文件和子文件夹
        if os.path.isfile(os.path.join(folder_path, item)):  # 如果是文件
            file_names.append(item)  # 将文件名加入列表
        else:  # 否则
            file_names.extend(get_files(os.path.join(folder_path, item)))  # 递归调用get_files函数
    return file_names  # 返回文件名列表

最后,我们可以在main函数中调用get_files函数,并打印出结果。

def main():
    folder_path = "/path/to/folder"  # 指定文件夹路径
    file_names = get_files(folder_path)  # 调用get_files函数
    print(file_names)  # 打印文件名列表


if __name__ == "__main__":
    main()

代码解析

导入必要的模块

我们需要使用os模块来判断文件类型,所以需要导入这个模块。

import os

定义函数get_files

这个函数接受一个文件夹路径作为参数,并返回一个包含所有文件名的列表。

def get_files(folder_path):
    file_names = []  # 初始化一个空列表

遍历文件夹中的所有文件和子文件夹

我们使用os.listdir函数来遍历文件夹中的所有文件和子文件夹。

    for item in os.listdir(folder_path):  # 遍历文件夹中的所有文件和子文件夹

判断文件类型

我们使用os.path.isfile函数来判断一个路径是否为文件。

        if os.path.isfile(os.path.join(folder_path, item)):  # 如果是文件

将文件名加入列表

如果是文件,我们将文件名加入列表。

            file_names.append(item)  # 将文件名加入列表

递归调用自身

如果是子文件夹,我们递归调用get_files函数来获取子文件夹下的所有文件名,并将结果与当前文件名列表合并。

        else:  # 否则
            file_names.extend(get_files(os.path.join(folder_path, item)))  # 递归调用get_files函数

返回文件名列表

最后,我们返回文件名列表。

    return file_names  # 返回文件名列表

调用get_files函数并打印结果

main函数中,我们可以调用get_files函数,并打印出结果。

def main():
    folder_path = "/path/to/folder"  # 指定文件夹路径
    file_names = get_files