📅  最后修改于: 2023-12-03 15:09:16.919000             🧑  作者: Mango
在 Python 中,可以使用递归算法来扫描目录。递归算法是一种自身调用的算法,通过函数不断调用自身来解决一个问题。
import os
def scan_dir(path):
"""
递归扫描目录
"""
for file_name in os.listdir(path):
file_path = os.path.join(path, file_name)
if os.path.isdir(file_path):
scan_dir(file_path)
else:
print(file_path)
以上代码定义了一个 scan_dir
函数,该函数接收一个字符串参数 path
,用于指定要扫描的目录路径。在函数中首先通过 os.listdir
函数获取指定目录下的所有文件和子目录,然后循环遍历这些文件和子目录。
对于子目录,使用 os.path.join
函数将父目录路径和子目录名称拼接成新的路径,然后在函数中递归调用 scan_dir
函数。对于普通文件,在函数中直接输出该文件的路径。
假设有如下目录结构:
../
├── dir1
│ ├── file1.txt
│ ├── file2.txt
│ └── subdir1
│ ├── file3.txt
│ ├── file4.txt
│ └── subdir2
│ └── file5.txt
├── dir2
│ └── file6.txt
├── file7.txt
└── file8.txt
调用 scan_dir('../')
,输出结果为:
../dir1/subdir1/file3.txt
../dir1/subdir1/file4.txt
../dir1/subdir1/subdir2/file5.txt
../dir1/file1.txt
../dir1/file2.txt
../dir2/file6.txt
../file7.txt
../file8.txt
以上代码和实现方式只是对递归算法的一个简单应用,还有很多其他算法和应用可以使用递归来实现,例如二叉树的遍历等。