如何不遍历内部内容直接清空文件夹且不删除目录本身
解决方案
核心思路
要实现无遍历、最高性能清空目录,不需要手动遍历目录内部内容,直接依托操作系统底层能力实现即可,比Python层循环删除内部文件/子目录的性能高10~100倍。
两种方案共有优势:
- 无需在Python层遍历目录内容,所有删除逻辑由操作系统底层实现,性能达当前环境最优
- 代码量少,出错概率低
- 远优于手动遍历
os.listdir/os.scandir再循环删除的实现
方案1:删除后重建(性能最高,跨平台通用)
该方案直接删除整目录后立刻重建同名目录,完全规避目录遍历开销,适合不需要保留原目录特殊权限、创建时间等属性的场景:
import os import shutil target_dir = r'D:\ZIP_Or_Installations' shutil.rmtree(target_dir) os.mkdir(target_dir)
方案2:调用系统原生命令(保留原目录属性,Windows专属)
如果需要保留原目录的ACL权限、创建时间等属性,直接调用Windows内置rmdir命令实现,所有删除逻辑由操作系统内核执行,无Python层遍历开销:
import subprocess target_dir = r'D:\ZIP_Or_Installations' # /s 递归删除目录下所有内容,/q 静默执行无需确认 subprocess.run(f'rmdir /s /q "{target_dir}\\*"', shell=True, check=True)
注意:如果目录内存在被其他进程占用的文件,两种方案都会执行失败,需要提前解除文件占用后再执行操作。
内容的提问来源于stack exchange,提问作者user14984949
相关产品推荐
相关产品推荐

