Python获取目录下所有子目录
1. 引言
在日常的编程工作中,有时我们需要获取一个目录下的所有子目录。可能是为了遍历目录下的文件,或者是为了统计目录下的文件个数等等。而使用Python编程语言,可以简便地实现这个功能。本文将详细介绍如何使用Python获取一个目录下所有的子目录。
2. os模块
在Python中,我们可以使用os
模块来进行文件和目录的操作。os
模块提供了许多有用的函数来处理文件和目录,包括获取路径,列出目录内容,创建和删除目录等等。
首先,我们需要导入os
模块:
import os
3. os.listdir()
函数
要获取一个目录下的所有子目录,我们首先需要知道该目录的路径。然后,我们可以使用os.listdir()
函数来列出该目录下的所有文件和子目录。os.listdir()
的参数是一个路径,返回一个包含目录下所有文件和子目录名称的列表。
下面是一个示例,我们通过os.listdir()
函数获取当前目录下的所有文件和子目录的名称:
import os
# 获取当前目录下的所有文件和子目录
files = os.listdir('./')
# 遍历打印所有文件和子目录的名称
for file in files:
print(file)
代码运行结果:
file1.txt
file2.txt
subdir1
subdir2
从代码运行结果可以看出,os.listdir()
函数返回了当前目录下的所有文件(file1.txt和file2.txt)和子目录(subdir1和subdir2)的名称。
4. 递归遍历子目录
一般情况下,我们不仅需要获取一个目录下的子目录,还需要获取子目录中的子目录,甚至是更深层次的子目录。
为了实现这一功能,我们可以使用递归的方法。递归指的是函数调用自身的过程。在我们的示例中,我们可以编写一个递归函数来获取一个目录下的所有子目录。
下面是一个递归函数get_subdirs()
的示例代码,该函数会输出指定目录下的所有子目录的名称:
import os
def get_subdirs(directory):
"""
获取指定目录下的所有子目录名称
"""
subdirs = [] # 保存子目录名称的列表
# 获取指定目录下的所有文件和子目录的名称
files = os.listdir(directory)
# 遍历所有文件和子目录的名称
for file in files:
# 构建文件或子目录的完整路径
filepath = os.path.join(directory, file)
# 判断是否为子目录
if os.path.isdir(filepath):
subdirs.append(filepath) # 将子目录路径添加到列表中
subdirs += get_subdirs(filepath) # 递归获取子目录的子目录
return subdirs
然后,我们可以调用get_subdirs()
函数来获取一个目录下的所有子目录的名称。下面是一个示例代码:
import os
def get_subdirs(directory):
"""
获取指定目录下的所有子目录名称
"""
subdirs = [] # 保存子目录名称的列表
# 获取指定目录下的所有文件和子目录的名称
files = os.listdir(directory)
# 遍历所有文件和子目录的名称
for file in files:
# 构建文件或子目录的完整路径
filepath = os.path.join(directory, file)
# 判断是否为子目录
if os.path.isdir(filepath):
subdirs.append(filepath) # 将子目录路径添加到列表中
subdirs += get_subdirs(filepath) # 递归获取子目录的子目录
return subdirs
# 获取当前目录下的所有子目录
subdirs = get_subdirs('./')
# 遍历打印所有子目录的名称
for subdir in subdirs:
print(subdir)
代码运行结果:
./subdir1
./subdir1/subsubdir1
./subdir2
从代码运行结果可以看出,get_subdirs()
函数成功获取了当前目录下的所有子目录的名称。
5. 总结
通过使用Python的os
模块,我们可以轻松地获取一个目录下的所有子目录。通过递归遍历子目录,我们还可以获取更深层次的子目录。