zoukankan      html  css  js  c++  java
  • 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

    遍历文件

    1.第一个参数fpath是遍历打印所有的文件路径

    # coding:utf-8
    import os
    path = r"D:	estpython2"  # 查找文件的路径
    for fpath, dirname, fnames in os.walk(path):
        print(fpath)  # 所有的文件夹路径      微信公众号:yoyoketang
    

    2.第二个参数dirname是遍历打印所有的文件夹名称

    # coding:utf-8
    import os
    path = r"D:	estpython2"  # 查找文件的路径
    for fpath, dirname, fnames in os.walk(path):
        print(dirname)  # 所有的文件名    微信公众号:yoyoketang
    

    3.第三个参数fnames是遍历打印所有的文件名

    # coding:utf-8
    import os
    path = r"D:	estpython2"  # 查找文件的路径
    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:	estpython2")
        for i in b:
            print i
    

    python自动化学习交流QQ群:226296743

  • 相关阅读:
    C#--跨线程更新UI--实时显示POST请求传过来的数据
    C#--序列化--JSON和对象互转方法
    C#--winform--Label标签的文字居中
    C#--自定义控件-panel控件(渐变色,文字的绘制)
    C#--自定义控件-开发LED指示灯控件(带闪烁效果)
    艾而特--ModbusTcp通讯测试
    C#--各种方法总结(静态,构造,析构,虚方法,重写方法,抽象,扩展)
    C#--特性的运用试验
    C#--特性基础
    C#--无法将lambda表达式转换为类型‘Delegate’,原因是它不是委托类型
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/7988687.html
Copyright © 2011-2022 走看看