一. 项目需求
网上好多方法都是遍历文件和文件夹,而本方法是只获取一级文件夹名称不包含文件。
Python listdir只展示文件夹,使用listdir()提取子目录内容却无法过滤文件,希望结果list仅保留文件夹。
二. 代码实现
调用next()函数,系统自带函数,配合os.walk()
import os
path = r'C:\User\123\Desktop'
path_list = next(os.walk(path))[1]
如果需要绝对路径,也可以提取(dirpath, dirnames, filenames)
拼接,网上有众多方法,此处不再赘述。
三. 输出示例
目录结构:
|--Desktop
|--目录1
|--目录1.1
|--文件1.2.pdf
|--目录2
|--目录3
|--文件3.1
|--文件4.txt
|--文件5.jpg
输出结果:
path_list = ['目录1','目录2','目录3']
四. 拓展知识
1、os.walk()的用法
定义:
os.walk(top, topdown=True, onerror=None, followlinks=False)
说明:
- top:指定遍历目录的地址
- topdown:默认为真,含义是优先遍历指定的目录地址,否则优先遍历目录下的子目录
- onerror:指定一个 callable 对象,这个是当发生异常的时候,会调用
- followlinke:默认为假,含义是不遍历目录下的快捷方式
返回:
os.walk()的返回值是一个可遍历的对象,每次遍历返回的是一个三元元组,可用root,dirs,files接收
- root:遍历到某目录的地址
- dirs:list 对象,存储遍历到该目录下的子目录名称
- files:list 格式,存储遍历到该目录下的文件
2、os.listdir() 的用法
定义:
os.listdir(path)
说明:
- path:要打开的文件目录路径
返回:
os.listdir的返回值是一个列表,列表里面存储该path下面的子目录的名称
示例:
如果想得到最后的文件,可以通过os.path.join来连接字符串,然后不停的遍历,获取到最后的文件
import os
path = r'C:\User\123\Desktop'
file_paths = []
for root, dirs, files in os.walk(path):
for file in files:
file_paths.append(os.path.join(root, file))
print(file_paths)