免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4497 | 回复: 2
打印 上一主题 下一主题

os.walk 忽略某个目录下的子目录【Python】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-06 18:37 |只看该作者 |倒序浏览
转:
os.walk 忽略某个目录下的子目录【Python】

os.walk 忽略某个目录下的子目录代码

  代码
  1. import os

  2. for root, dir, file in os.walk('./'):
  3.     print root, dir, file
  4.     dir[:] = [] # 忽略当前目录下的子目录分析
复制代码
分析
为什么用dir[:] = [],而不用dir = [] ?
  1. >>> a = [1, 2, 3]
  2. >>> b = a  # b 与 a 指向同一个列表
  3. >>> b
  4. [1, 2, 3]
  5. >>> id(a)
  6. 31247976
  7. >>> id(b)
  8. 31247976
  9. >>> b = [] # b 指向另一个列表
  10. >>> b
  11. []
  12. >>> a
  13. [1, 2, 3]
  14. >>> id(b)
  15. 31221680
  16. >>> id(a)
  17. 31247976
  18. >>> a = [1, 2, 3]
  19. >>> b = a
  20. >>> b[:] = []  # 或 del b[:] ,清空列表
  21. >>> id(b)
  22. 31239624
  23. >>> id(a)
  24. 31239624
  25. >>> b
  26. []
  27. >>> a
复制代码
[]由上可知,使用dir = []并没有改变原来的列表,而dir[:] = []则是原地修改列表

论坛徽章:
0
2 [报告]
发表于 2011-06-07 21:32 |只看该作者
不错,虽然我早知道了。

论坛徽章:
0
3 [报告]
发表于 2011-06-09 19:16 |只看该作者
暂一个!!!
不过有点看不明白dir[:]指向的是当前目录下的子目录。这个是怎么规定的??

在那个步骤中获得了当前目录下的所有子目录??

设置为空后,又如何循环的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP