一、os模块获取文件列表
os模块是Python内置的一种常用模块,可以方便地进行操作系统相关的操作。在Python中,可以使用os模块的listdir()函数获取指定目录下的文件列表。listdir()函数接收一个字符串类型的路径参数,返回该路径下所有文件和目录的列表,并且包括隐藏文件和目录。
import os path = "/path/to/directory" files = os.listdir(path) for file in files: print(file)
上述代码中,我们首先导入os模块,然后指定路径,使用listdir()函数获取该路径下所有文件和目录的列表,最后遍历列表并打印出每个文件的名称。
二、glob模块获取文件列表
Python的glob模块提供了一个方便的方式来匹配指定模式下的文件列表。glob()函数接收一个字符串类型的路径参数,使用Unix-shell风格的模式来匹配文件和目录。该函数返回一个包含所有匹配的路径的列表。
import glob path = "/path/to/directory/*.txt" files = glob.glob(path) for file in files: print(file)
上述代码中,我们首先导入glob模块,然后指定路径,使用glob()函数获取该路径下所有txt文件的列表,最后遍历列表并打印出每个文件的路径。
三、os.walk()获取文件列表
os.walk()函数可以遍历一个目录下所有子目录和文件,并可自定义过滤格式。这个函数返回一个三元组,包含当前路径、该路径下所有子目录的名称列表和该路径下所有文件的名称列表。
import os path = "/path/to/directory" for dirpath, dirnames, filenames in os.walk(path): for filename in filenames: if filename.endswith(".txt"): print(os.path.join(dirpath, filename))
上述代码中,我们首先指定路径,然后使用os.walk()函数遍历该路径下所有子目录和文件。对于每个文件名称,检查其是否以".txt"文件格式结尾。如果是,使用os.path.join()拼接路径和文件名,最后打印文件路径。
四、使用os.scandir()获取文件列表
os.scandir()函数比os.listdir()更加高效,并且返回的是目录项(entry)的迭代器。目录项是包含有关文件的元数据的命名元组。这个函数可以快速读取文件信息,例如文件大小、修改时间等。
import os path = "/path/to/directory" with os.scandir(path) as entries: for entry in entries: if entry.is_file() and entry.name.endswith(".txt"): print(entry.path)
上述代码中,我们使用os.scandir()函数遍历指定目录下所有文件的元数据信息。对于每个文件,检查其是否以".txt"文件格式结尾,并打印其路径。
五、总结
以上介绍了4种Python获取目录下文件列表的方法,分别使用了os模块的listdir()函数、glob模块、os.walk()函数和os.scandir()函数。每种方法都有其优缺点,可以根据自己的需求进行选择使用。需要注意的是,获取文件列表时应该注意文件格式和路径的问题。