os.walk

函数声明:os.walk(top,topdown=True,onerror=None)

(1)参数top表示需要遍历的顶级目录的路径。

(2)参数topdown的默认值是“True”表示首先返回顶级目录下的文件,然后再遍历子目录中的文件。当topdown的值为"False"时,表示先遍历子目录中的文件,然后再返回顶级目录下的文件。

(3)参数onerror默认值为"None",表示忽略文件遍历时的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。

返回值:函数返回一个元组,含有三个元素。这三个元素分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表。

请看例子:

import os.path

def walk(arg):
for root,dirs,files in os.walk(arg):
for file in files:
print os.path.join(root,file) def main():
path ='c:\\Users\\jim_wan\\Desktop'
walk(path) if __name__ == '__main__':
main()

os.path.walk

函数声明:os.path.walk(top,func,arg)

(1)参数top表示需要遍历的目录路径

(2)参数func表示回调函数,即对遍历路径进行处理的函数。所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数 处理某个任务。注意:walk的回调函数必须提供三个参数:第1个参数为os.path.walk的参数arg,第2个参数表示目录dirname,第3 个参数表示文件列表names。注意:os.path.walk的回调函数中的文件列表不和os.walk()那样将子目录和文件分开,而是混为了一摊, 需要在回调函数中判断是文件还是子目录。

(3)参数arg是传递给回调函数的元组,为回调函数提供处理参数,arg可以为空。回调函数的第1个参数就是用来接收这个传入的元组的。

请看例子:

import os.path

def Vist(arg,dirname,names):
for filepath in names:
print os.path.join(dirname,filepath) def main():
path ='c:\\Users\\jim_wan\\Desktop'
os.path.walk(path,Vist,()) if __name__ == '__main__':
main()

可以看到实现同样的功能,os.walk和os.path.walk代码量基本差不多。唯一区别是os.walk比较简单直接,容易理解;而os.path.walk用了回调函数,稍微难理解点。所以用哪个还是要视个人情况而定。

最新文章

  1. JS回调函数全解析教程
  2. Nodejs学习总结 -Express入门(一)
  3. [转]逻辑斯蒂回归 via python
  4. Node.js入门:Node.js&NPM的安装与配置
  5. 移动web开发之像素和DPR
  6. [转] git fetch与pull
  7. Web前端开发基础 第四课(CSS文字和段落排版)
  8. CPU的ADDR2为什么跟SDRAM的0地址线接在一起
  9. rpm方式安装gcc缺少依赖项的解决方法
  10. SpringMVC 简单
  11. [转]jquery中使用event.target的几点
  12. 转载:C# HashSet 用法
  13. java优势
  14. 一口一口吃掉Volley(四)
  15. React+ANTD项目使用后的一些关于生命周期比较实用的心得
  16. CSS中清除浮动的作用以及如何清除浮动
  17. Luogu2839 Middle 主席树、二分答案
  18. 第一章:认识Ajax
  19. Nginx配置跨域请求 Access-Control-Allow-Origin *
  20. quartz 2.1.6使用方法

热门文章

  1. knockout Ajax异步无刷新分页 Demo +mvc+bootstrap
  2. iOS 实现从后台切换到前台-复制分享宝贝内容,打开淘宝APP,自动弹出宝贝提示信息
  3. PHP和Java 加解密
  4. jqgrid 事件说明
  5. Happy Necklace(矩阵快速幂)
  6. IDEA错误的将所有代码文件都加入版本控制
  7. Just common sense.
  8. Delphi中的dll操作
  9. Dev GridControl 小结3
  10. Python3.6全栈开发实例[021]