在Python中如何实现一个函数来获取一个文件夹中的所有文件名?
发布时间:2023-06-02 00:47:22
在Python中,可以使用os模块中的listdir()函数和递归算法来获取一个文件夹中的所有文件名。
首先,我们需要导入os模块,该模块提供了许多与操作系统交互的功能,包括访问文件和文件夹。
接下来,定义一个函数,该函数接收一个参数,表示文件夹的路径。我们可以使用os模块中的listdir()函数来获取该文件夹中的所有文件和文件夹的名称,并存储在一个列表中。
但是,listdir()函数只能获取当前目录中的文件和文件夹的名称,无法递归到子目录中。为了解决这个问题,我们可以使用递归算法来获取所有文件和文件夹的名称。
具体实现如下:
import os
def get_all_file_names(directory):
"""
获取文件夹中所有文件的名称
"""
file_names = []
for file in os.listdir(directory):
# 判断是否为文件夹
if os.path.isdir(os.path.join(directory, file)):
# 递归获取子目录中的文件名称
file_names.extend(get_all_file_names(os.path.join(directory, file)))
else:
# 添加文件名称到列表中
file_names.append(file)
return file_names
该函数中,我们首先定义了一个空的列表file_names用于存储文件名称。然后使用listdir()函数获取文件夹中的所有文件和文件夹的名称,并循环遍历每一个文件和文件夹的名称。在循环中使用os.path.isdir()判断该名称是否为文件夹,如果是,则递归调用函数获取子目录中的文件名称,并使用extend()方法将子目录中的文件名称添加到file_names列表中。如果不是文件夹,则将文件名称添加到file_names列表中。
最后,返回file_names列表,其中包含该文件夹及其子目录中所有文件的名称。
调用该函数的方式如下:
files = get_all_file_names("C:/data")
print(files)
上面的代码将返回C:/data文件夹及其子目录中所有文件的名称,并将其存储在files变量中。
总结来说,使用os模块的listdir()函数和递归算法可以轻松地实现获取一个文件夹中的所有文件名的功能。
