好久没写文章了,最近忙工作、忙给客户写点小东西,还有就是不知道写啥。
所以,水一次,记录下最近让我不想写代码的一个小问题——遍历目录
为何一直不想面对这个问题呢,一是日常没使用到,二是我就疑惑咋知道目录里有多少子目录,挖到啥程度才算底呢?
其实解决问题也很简单,只是被我想复杂了,本质原理就是递归。这个词还是读书时学C语言学到的哈哈。我就干觉得这得判断多少次啊,这效率得多低啊。。。
后面我用易语言,用递归的方式完成了这个小功能。因为涉及客户定制的东西,就不抠出代码了,反正写起来很简单。
我又用python试了下,好像更简单!一方面可以让AI写,一方面是python的库是真的全。
python的 os.walk() 直接搞定,代码如下:
def traverse_folder(folder_path):
# 遍历指定文件夹及其子文件夹
for root, dirs, files in os.walk(folder_path):
# 打印当前遍历到的目录
print(f"Directory: {root}")
# 打印当前目录下的所有子目录
for dir_name in dirs:
print(f" Subdirectory: {os.path.join(root, dir_name)}")
# 打印当前目录下的所有文件
for file_name in files:
print(f" File: {os.path.join(root, file_name)}")
# 请将 'A' 替换为实际的文件夹路径
folder_path = r'E:\DD'
traverse_folder(folder_path)效果:

当然,我发现它明面上不是用递归的方式写的,总得让它直白地重写一次:
import os
def traverse_folder_recursive(folder_path):
# 打印当前目录
print(f"Directory: {folder_path}")
try:
# 列出当前目录下的所有文件和文件夹
items = os.listdir(folder_path)
for item in items:
item_path = os.path.join(folder_path, item)
if os.path.isdir(item_path):
# 若为目录,则递归调用函数
traverse_folder_recursive(item_path)
else:
# 若为文件,则打印文件路径
print(f" File: {item_path}")
except Exception as e:
print(f"Error accessing {folder_path}: {e}")
# 请将路径替换为实际需要遍历的路径
folder_path = r'E:\DD'
traverse_folder_recursive(folder_path)效果:

两种方式都很简单的完成了。
所以,我想分享的是:动手去做才是硬道理,光在那瞎想是没用的。你以为的麻烦,只是你自以为的,熟能生巧能解决你的以为。再往后,标准化能解决你更多的烦恼。
- End -
更多精彩文章
点击下方名片关注【偶尔敲代码】
