在Python中,os.listdir()
和 os.walk()
是两种不同的方法来获取文件系统中的路径列表。
-
os.listdir()
:这个函数用来获取指定目录下的所有文件和文件夹的名称列表。它接受一个路径参数,返回该路径下的所有项目的名称(包括文件和文件夹)。这个方法只返回当前目录下的项目名称,而不会递归到子目录中去。 -
os.walk()
:这个函数用来递归地遍历指定目录及其子目录下的所有文件和文件夹。它接受一个路径参数,返回一个生成器(generator),每次迭代都会返回一个三元组(当前文件夹路径, 子文件夹列表, 文件列表)
。通过遍历这个生成器,可以获取指定目录下的所有文件和文件夹的路径。
区别总结如下:
os.listdir()
返回指定目录下的项目名称列表,不进行递归遍历。os.walk()
返回一个生成器,可以递归遍历指定目录及其子目录下的所有项目。
示例代码:
import os
# 使用 os.listdir() 获取目录下的文件和文件夹名称列表
files = os.listdir('/path/to/directory')
for file in files:
print(file)
# 使用 os.walk() 遍历目录及其子目录下的文件和文件夹路径
for root, dirs, files in os.walk('/path/to/directory'):
for file in files:
print(os.path.join(root, file))
需要注意的是,os.walk()
是递归遍历文件系统的全部层级,如果目录结构非常大,调用 os.walk()
可能会消耗较多的时间和内存资源。在处理大规模目录结构时,注意进行优化和合理使用。