鱼C论坛

 找回密码
 立即注册
查看: 590|回复: 2

[已解决]求助如何用递归删除一个目录中所有文件和子目录,不是用shutil

[复制链接]
发表于 2018-11-9 01:41:46 | 显示全部楼层 |阅读模式
50鱼币
要删除一个目录中所有文件和子目录a\b\c\d\下面还有文件
写了这个递归做,但是不报错也没效果,求大佬看看。
  1. #         |a
  2. #           |b
  3. #           |c
  4. #           |d
  5. #           1.txt
  6. #           2.txt
  7. #           3.txt
  8. #           4.avi
  9. #           5.pptpp
  10. import os
  11. def selct1(path):
  12.     if os.path.isdir(path):
  13.         for i in os.listdir(path):
  14.             path = os.path.join(path,i)
  15.             if os.path.isdir(path):
  16.                 return selct1(path)
  17.     elif os.path.isfile(path):
  18.         os.rmdir(path)
  19.     else:
  20.         os.remove(path)
  21. selct1(r'C:\Users\Think\Desktop\a')
复制代码

最佳答案
2018-11-9 01:41:47
本帖最后由 Mongen 于 2018-11-9 12:24 编辑

#将当前文件夹及子文件全部删除
import os
def selct1(path):
    if os.path.isdir(path):
        for i in os.listdir(path):
            path2 = os.path.join(path,i)
            if os.path.isdir(path2):
                selct1(path2)
            else:
                os.remove(path2)
        os.rmdir(path)#删除当前文件夹的文件后也要删除当前文件夹
    else:
        return os.remove(path)

最佳答案

查看完整内容

#将当前文件夹及子文件全部删除 import os def selct1(path): if os.path.isdir(path): for i in os.listdir(path): path2 = os.path.join(path,i) if os.path.isdir(path2): selct1(path2) else: os.remove(path2) os.rmdir(path)#删除当前文件夹的文件后也要删除当前文件夹 else: return os.remove(path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-9 01:41:47 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Mongen 于 2018-11-9 12:24 编辑

#将当前文件夹及子文件全部删除
import os
def selct1(path):
    if os.path.isdir(path):
        for i in os.listdir(path):
            path2 = os.path.join(path,i)
            if os.path.isdir(path2):
                selct1(path2)
            else:
                os.remove(path2)
        os.rmdir(path)#删除当前文件夹的文件后也要删除当前文件夹
    else:
        return os.remove(path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-9 11:27:40 | 显示全部楼层
本帖最后由 Mongen 于 2018-11-9 11:46 编辑

#在你代码尽量不动上修改的

import os
def selct1(path):
    if os.path.isdir(path):
        for i in os.listdir(path):
            path2 = os.path.join(path,i)
            if os.path.isdir(path2):
                selct1(path2)
                os.rmdir(path2)#删除当前文件夹
            else:#如果不是文件夹删除
                os.remove(path2)
        #os.rmdir(path)
    elif os.path.isfile(path):
        os.remove(path)
    else:
        os.remove(path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 21:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表