用python删除指定目录(onedrive)下的所有空目录。

最近微信onedrive封停大量的教育账户。在10月之间要求下载备份迁移完资源后关停。目前文件夹都是只读状态,无法删除(提示没有超级管理员权限,主要是onedrive有一个特殊账号接管了,所有的管理员账户都没有权限)。

云端资源下载后,在onedrive客户端,在设置-账户中取消此链接电脑。然后耐心等一段时间后(如果不等就关闭进程,会导致部分文件夹无法删除),就可以彻底变成正常文件夹。

新问题来了,原来云端同步后,释放空间的文件夹,还有本地保留文件的文件夹都混到一起了。一个个删除空文件夹在费时间。

当然可以写个dos批处理bat文件

@echo off

rd/s/q “e:\onedrive-person”

执行时,经常卡住,执行效率太差了。

于是想到用python写个程序,来做这件事吧,上代码:

import os
def rm(path1):
 # 返回当前目录下的内容。文件或文件夹
 # print(path)
 fls = os.listdir(path1)
 if len(fls)==0:
 # print('当前文件夹为空')
 print(f"删除:{path1}")
 # os.rmdir(path1)
 return

 for p in fls:
 p2 = f'{path1}\\{p}'
 if os.path.isdir(p2):
 # print(f'进入{p2}')
 rm(p2)
 if os.path.exists(p2) and len(os.listdir(p2)) == 0: # 里面删除后这个可能就是空文件了
 print(f"删除:{p2}")
 os.rmdir(p2) #在这里执行删除


if __name__ == '__main__':
 rm(os.getcwd())
 os.system('pause') # 按任意键退出

''' 
 # 测试
 path = os.getcwd() # 返回当前工作目录
 # 删除空目录 os.rmdir(path)
 # dir = os.path.isdir(path) # 判断是否是目录
 files = os.listdir(r'E:\baidu-onedrive\OneDrive - odb') # 自定义目录下的文件或文件夹

 print(len(files))'''

执行,可以看进度,很快不卡,一且ok。

原文链接:,转发请注明来源!
评论已关闭。