你可以使用Python的os模块来实现删除某个目录下最上层的嵌套非空目录,同时保留根目录。具体的实现步骤如下:
- 使用os模块的walk函数遍历指定目录下的所有文件和子目录。
- 对于遍历到的每一个子目录,可以使用os模块的listdir函数来获取目录下的所有文件和子目录。
- 使用os模块的rmdir函数删除空目录,使用os模块的remove函数删除文件。
- 在遍历过程中,结果集中保留根目录。
- 遍历完整个目录后,根据结果集中的子目录列表,逆序遍历删除非空子目录。
下面是一个示例代码供参考:
import os
def remove_nested_dirs(root_dir):
# 存储结果的列表,初始时只有根目录
result = [root_dir]
# 遍历指定目录下的所有文件和子目录
for root, dirs, files in os.walk(root_dir):
for dir_name in dirs:
dir_path = os.path.join(root, dir_name)
# 获取子目录下的所有文件和子目录
dir_content = os.listdir(dir_path)
# 如果子目录为空,则删除
if not dir_content:
os.rmdir(dir_path)
else:
# 如果子目录非空,则将其加入结果列表
result.append(dir_path)
# 逆序遍历结果列表中的子目录,删除非空子目录
for dir_path in reversed(result):
try:
os.rmdir(dir_path)
except OSError:
# 如果目录非空,不进行删除
pass
# 测试
remove_nested_dirs('/path/to/root_dir')
请将代码中的/path/to/root_dir
替换为你要操作的目录的实际路径。请注意,删除操作具有潜在的风险,请谨慎操作,并备份重要数据。