python笔记4-遍历文件夹目录os.walk()

前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 一、walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下。 2.walk()方法语法格式如下: os.walk(top,topdown=True,onerror=None, followlinks=False) - top 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。 - topdown 可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。 - onerror 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。 - followlinks 设置为 true,则通过软链接访问目录。 以上参考文档[http://www.runoob.com/python/os-walk.html](http://www.runoob.com/python/os-walk.html) 二、遍历文件 1.第一个参数fpath是遍历打印所有的文件路径 ``` # coding:utf-8 import os path = r"D:\test\python2" # 查找文件的路径 for fpath, dirname, fnames in os.walk(path): print(fpath) # 所有的文件夹路径 微信公众号:yoyoketang ```

2.第二个参数dirname是遍历打印所有的文件夹名称 ``` # coding:utf-8 import os path = r"D:\test\python2" # 查找文件的路径 for fpath, dirname, fnames in os.walk(path): print(dirname) # 所有的文件名 微信公众号:yoyoketang ```

3.第三个参数fnames是遍历打印所有的文件名 ``` # coding:utf-8 import os path = r"D:\test\python2" # 查找文件的路径 for fpath, dirname, fnames in os.walk(path): print(fnames) # 所有的文件名 微信公众号:yoyoketang ```

三、参考代码

1.遍历查找文件夹内所有的子文件(不包含文件夹)

2.用endswith判断查找后置是.py结尾的
```
# coding:utf-8
import os

def get_files(path='D:\\xx', rule=".py"):
    all = []
    for fpathe,dirs,fs in os.walk(path):   # os.walk是获取所有的目录
        for f in fs:
            filename = os.path.join(fpathe,f)
            if filename.endswith(rule):  # 判断是否是"xxx"结尾
                all.append(filename)
    return all

if __name__ == "__main__":
    b = get_files(r"D:\test\python2")
    for i in b:
        print i
```

原文发布于微信公众号 - 从零开始学自动化测试(yoyoketang)

原文发表时间:2017-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idba

浅谈 multiprocessing

一前言 使用python进行并发处理多台机器/多个实例的时候,我们可以使用threading ,但是由于著名的GIL存在,实际上threading 并...

9500
来自专栏飞雪无情的博客

android技术文档翻译--ant任务

原文地址 http://tools.android.com/tech-docs/ant-tasks

8020
来自专栏码洞

Channel最佳实践之基本规则【译】

channel[通道]是golang的一种重要特性,正是因为channel的存在才使得golang不同于其它语言。channel使得并发编程变得简单容易有趣。

7510
来自专栏流柯技术学院

JMeter专题系列(五)检查点

检查点:我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用t.dat里面的文件呢。当然,我们可以从结果图表中查看。但我还是想在“登录”这个...

13630
来自专栏猛牛哥的博客

aardio v13.6 更新

15620
来自专栏yukong的小专栏

【java并发编程实战1】何为线程安全性线程安全性

多线程问题,一直是我们老生常谈的一个问题,在面试中也会被经常问到,如何去学习理解多线程,何为线程安全性,那么大家跟我的脚步一起来学习一下。

14130
来自专栏zingpLiu

Python上下文管理器

  在Python中让自己创建的函数、类、对象支持with语句,就实现了上线文管理协议。我们经常使用with open(file, "a+") as f:这样的...

13550
来自专栏大闲人柴毛毛

Java并发编程的艺术(十二)——线程安全

1. 什么是『线程安全』? 如果一个对象构造完成后,调用者无需额外的操作,就可以在多线程环境下随意地使用,并且不发生错误,那么这个对象就是线程安全的。 2. ...

37850
来自专栏大内老A

[WCF安全系列]绑定、安全模式与客户端凭证类型:WSHttpBinding与WSDualHttpBinding

在上一篇文章中,我们详细地介绍了BasicHttpBinding具有怎样的安全模式的支持,已经在各种安全模式下分别可以采用怎样的客户端凭证。接下来我们来进一步分...

20670
来自专栏java达人

为什么volatile使用比synchronized少

在多线程编程中,我们最常用的是synchronized,而对volatile的使用,却相对较少。这一方面是因为volatile的使用场景限制,另一方面是vola...

23480

扫码关注云+社区

领取腾讯云代金券