os.walk 忽略某个目录下的子目录【Python】

转:
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[:] = []则是原地修改列表

作者: 三里屯摇滚   发布时间: 2011-06-06

不错,虽然我早知道了。

作者: icyomik   发布时间: 2011-06-07