python 递归遍历文件夹,并打印满足条件的文件路径实例


Posted in Python onAugust 30, 2017

题目:利用协程来遍历目录下,所有子文件及子文件夹下的文件是否含有某个字段值,并打印满足条件的文件的绝对路径。

#!/user/bin/env python
# -*- coding:utf-8 -*-

#grep -rl "python" D:\devtools\workspace\python\aaa

import os

def init(func):
 def wrapper(*args,**kwargs):
  res=func(*args,**kwargs)
  res.send(None)
  return res
 return wrapper

@init
def search(target):
 '找到文件的绝对路径'
 while True:
  dir_name=yield
  g=os.walk(dir_name)
  for i in g:
   for j in i[-1]:
    file_path="%s\\%s"%(i[0],j)
    target.send(file_path)
@init
def get_file_handle(target):
 '获取文件句柄'
 while True:
  file_path=yield
  with open(file_path) as f:
   target.send((file_path,f))

@init
def cat_file(target):
 '读取文件'
 while True:
  file_path,f=yield
  for line in f:
   target.send((file_path,line))

@init
def printer(pattern):
 '打印满足过滤条件的文件'
 s=set()
 while True:
  file_path,line=yield
  if pattern in line:
   if file_path not in s:
    print(file_path)
   s.add(file_path)


g=search(get_file_handle(cat_file(printer("python"))))
g.send("D:\\devtools\\workspace\\python\\aaa")

使用装饰器以后,无需再每次执行.send(None),形参target接收的是一个生成器。

整个编程采用了面向过程的思路。

面向过程需要把整个流程设计出来。

其好处就是:a.体系结构更加清晰;b.简化了程序的复杂度

缺点:不具有可扩展性(内部耦合度太高)

具体应用场景:那些长期不需要怎么变化的软件。如系统

以上这篇python 递归遍历文件夹,并打印满足条件的文件路径实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常用的日期时间处理方法示例
Feb 08 Python
Java分治归并排序算法实例详解
Dec 12 Python
Python中常用信号signal类型实例
Jan 25 Python
使用Flask集成bootstrap的方法
Jul 24 Python
Python3实现的反转单链表算法示例
Mar 08 Python
Django1.11配合uni-app发起微信支付的实现
Oct 12 Python
python第三方库学习笔记
Feb 07 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
Python 连接 MySQL 的几种方法
Sep 09 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
分享Python获取本机IP地址的几种方法
Mar 17 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 #Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 #Python
关于python的list相关知识(推荐)
Aug 30 #Python
Python编程实现正则删除命令功能
Aug 30 #Python
Python删除Java源文件中全部注释的实现方法
Aug 30 #Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 #Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 #Python
You might like
php用户注册页面利用js进行表单验证具体实例
2013/10/17 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
pytorch梯度剪裁方式
2020/02/04 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
用Python实现职工信息管理系统
2020/12/30 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
这76道Java面试题及答案,祝你能成功通过面试
2016/04/16 面试题
请假条的格式
2014/04/11 职场文书
《秋游》教学反思
2014/04/24 职场文书
工作失职检讨书500字
2014/10/17 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
市场营销计划书
2019/04/24 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python