免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: __BlueGuy__
打印 上一主题 下一主题

[算法] 【分享】 递归删除文件夹 [复制链接]

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
11 [报告]
发表于 2012-10-25 15:05 |只看该作者
本帖最后由 linux_c_py_php 于 2012-10-25 15:06 编辑
  1. #python2.7.3
  2. #coding=utf-8

  3. import os

  4. def RemoveDictionaryRecursive(top):
  5.     for dirpath, dirnames, filenames in os.walk(top, topdown = False):
  6.         for file in filenames:
  7.             os.unlink(os.path.join(dirpath, file))
  8.         for dir in dirnames:
  9.             os.rmdir(os.path.join(dirpath, dir))
  10.     os.rmdir(top)

  11. RemoveDictionaryRecursive('/root/code/python/a')
复制代码
发现Python里的remove和linux c里的不一样, 导致代码从4行增长了那么多.

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
12 [报告]
发表于 2012-10-25 15:09 |只看该作者
内置的walk支持两种递归模式, 一种是按照递归进入顺序枚举, 一种是按递归退出顺序枚举, 所以顺理成章的可以用来递归删除目录了, 而且接口用起来其实是迭代器的形式, 递归过程透明了.

starwing83 发表于 2012-10-25 14:51
回复 7# linux_c_py_php

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
13 [报告]
发表于 2012-10-25 15:10 |只看该作者
恩, 还是Shell好用, 能用Shell尽量不用别的, 写起来又快又熟练.

action08 发表于 2012-10-25 14:51
为什么自己实现啊?? linux bash call

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
14 [报告]
发表于 2012-10-25 16:05 |只看该作者
回复 11# linux_c_py_php


    不错不错很不错,我的目标就是在Lua里面把这些东西弄出来……(诶,为什么弄这些?因为Lua的标准库里面除了ANSI C有的以外其他的全!部!都!没!有!虽然我理解,但这不妨碍我吐槽吧……)

论坛徽章:
0
15 [报告]
发表于 2012-10-25 17:13 |只看该作者
shell 一行搞定。。。。你信吗?

论坛徽章:
0
16 [报告]
发表于 2012-10-26 13:27 |只看该作者
find ./ -type d -exec rm -rf {} \;

论坛徽章:
0
17 [报告]
发表于 2012-12-07 09:04 |只看该作者
回复 5# starwing83

windows的公文包什么的干不掉,哈哈

论坛徽章:
30
摩羯座
日期:2013-12-23 17:28:38牛市纪念徽章
日期:2015-07-13 11:35:582022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:57青铜圣斗士
日期:2015-11-27 17:45:3815-16赛季CBA联赛之天津
日期:2016-02-15 13:44:3615-16赛季CBA联赛之江苏
日期:2018-05-02 16:56:2715-16赛季CBA联赛之辽宁
日期:2018-08-08 13:41:1015-16赛季CBA联赛之深圳
日期:2018-10-02 18:05:0315-16赛季CBA联赛之天津
日期:2019-05-31 15:05:0615-16赛季CBA联赛之北京
日期:2022-06-30 13:34:1115-16赛季CBA联赛之同曦
日期:2022-07-06 19:33:5415-16赛季CBA联赛之吉林
日期:2022-12-28 14:16:22
18 [报告]
发表于 2012-12-07 12:48 |只看该作者
文件遍历最好不要用递归吧,否则遇到复杂目录直接就堆栈溢出了,用多叉树实现比较好,我以前做过这种东西,稍微复杂了一点,代码不唯美

论坛徽章:
0
19 [报告]
发表于 2012-12-07 13:20 |只看该作者
能删除根路径吗?

论坛徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
20 [报告]
发表于 2012-12-07 13:44 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP