怎么删除云端文件(用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。