Python os.listdir与os.walk实现获取路径详解
本文详解Python中os.listdir与os.walk两个模块获取文件路径的方法。os.listdir适用于单层目录,直接列出文件;os.walk支持递归遍历,返回三元组(dirpath, dirnames, filenames),可处理包含子目录的复杂结构。通过示例代码展示如何拼接绝对路径,帮助开发者高效处理文件系统操作。
1. os.listdir
适用场景:当指定目录下仅包含文件,不存在子文件夹时,可以使用os.listdir方法。
示例:假设路径 d:\listdir 下包含三个文件(text1.txt、test2.txt、test3.txt),获取这些文件的绝对路径代码如下:
import os
path = r'd:\listdir'
for filename in os.listdir(path):
#目录的路径和文件名拼接起来,得到了文件的绝路路径
print(os.path.join(path,filename))
输出结果如下:
d:\listdir\test1.txt d:\listdir\test2.txt d:\listdir\test3.txt
2. os.walk
适用场景:涉及递归遍历的情况,即目录中既包含文件,也包含子文件夹(子文件夹内可能还有文件和子文件夹)。此时需使用os.walk读取所有文件。
示例:假设路径 d:\listdir 下包含三个文件(text1.txt、test2.txt、test3.txt)以及两个子文件夹filedir1和filedir2。其中filedir1包含文件text1_1.txt和text1_2.txt,filedir2包含文件test2_1.txt和test2_2.txt。遍历代码如下:
import os
path = r'd:\listdir'
for dirpath,dirnames,filenames in os.walk(path):
print(dirpath,dirnames,filenames)
输出结果如下:
d:\listdir ['filedir1', 'filedir2'] ['test1.txt', 'test2 .txt'] d:\listdir\filedir1[] ['test1_1.txt', 'test1_2.txt'] d:\listdir\filedir2[] ['test2_1.txt','test2_2.txt']
说明:os.walk接收一个路径字符串作为输入,以生成器(yield)方式返回一个包含三个元素的元组:(dirpath, dirnames, filenames)。
dirpath表示当前遍历到的目录路径,类型为字符串。例如上述示例中的 d:\listdir、d:\listdir\filedir1、d:\listdir\filedir2。
dirnames列出当前目录路径下所有存在的子目录名称。例如在 d:\listdir 下有两个子目录:filedir1和filedir2。
filenames列出当前目录路径下所有文件的名称。例如在 d:\listdir 下有两个文件test1.txt和test2 .txt,则filenames将包含这两个文件名。
若需获取路径下所有文件的绝对路径,可结合os.path.join进行拼接:
import os
path = r'd:\listdir'
for dirpath,dirnames,filenames in os.walk(path):
for filename in filenames:
print(os.path.join(dirpath,filename))
输出结果如下:
d:\listdir\test1.txt d:\listdir\test2.txt d:\listdir\filedir1\test1_1.txt d:\listdir\filedir1\test1_2.txt d:\listdir\filedir2\test2_1.txt d:\listdir\filedir2\test2_2.txt
本文介绍了Python中os.listdir与os.walk获取文件路径的方法。如需了解更多相关内容,可搜索本站往期文章或继续浏览后续文章。感谢支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









