Python如何列出目录下所有文件
1. 引言
在进行文件处理和数据读写的过程中,有时候我们需要获取某个目录下的所有文件名,以便对这些文件进行进一步的操作。Python提供了多种方法来列出目录下的所有文件,本文将详细介绍这些方法,并给出相应的代码示例。
2. 使用os模块的os.listdir()函数
os模块是Python提供的一个常用的操作系统相关的模块,其中的os.listdir()函数可以用于获取指定目录下的所有文件和目录的名称。
import os
def list_files(directory):
files = os.listdir(directory)
for file in files:
print(file)
# 测试示例
list_files('.')
运行上述代码,将会列出当前目录下的所有文件和目录名称。但是需要注意的是,os.listdir()函数会列出目录下的所有文件和子目录,如果需要只列出文件,可以在循环判断中加入判断逻辑。
3. 使用os模块的os.scandir()函数
os模块还提供了另一个函数os.scandir(),它返回一个迭代器,通过迭代器可以遍历指定目录下的所有文件和目录。相比于os.listdir()函数,os.scandir()函数的效率更高。
import os
def list_files(directory):
with os.scandir(directory) as entries:
for entry in entries:
if entry.is_file():
print(entry.name)
# 测试示例
list_files('.')
运行上述代码,将会仅列出当前目录下的所有文件的文件名。
4. 使用glob模块的glob()函数
glob模块提供了一种更为简便的方式来匹配文件路径名,并返回匹配的文件名列表。我们可以使用glob()函数来列出指定目录下的所有文件名。
import glob
def list_files(directory):
file_pattern = os.path.join(directory, '*')
files = glob.glob(file_pattern)
for file in files:
if os.path.isfile(file):
print(os.path.basename(file))
# 测试示例
list_files('.')
上述代码中,我们首先使用os.path.join()函数构建了一个文件路径的匹配模式,然后使用glob.glob()函数获取匹配的文件列表。最后,通过判断每个文件是否是文件而不是目录,可以只列出文件的文件名。
5. 使用os.walk()函数
os模块提供的os.walk()函数可以用于生成指定目录下的所有文件和子目录名称。该函数返回一个迭代器,可以通过迭代的方式遍历目录层级结构。
import os
def list_files(directory):
for root, dirs, files in os.walk(directory):
for file in files:
print(file)
# 测试示例
list_files('.')
上述代码中,我们通过os.walk()函数遍历指定目录下的所有文件和子目录名称,并打印出所有文件的名称。
6. 总结
本文介绍了Python中四种常用的方法来列出目录下的所有文件,它们分别是使用os模块的os.listdir()函数、os.scandir()函数,以及使用glob模块的glob()函数和os模块的os.walk()函数。在实际使用中,可以根据具体的需求选择适合的方法。