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 相关文章推荐
tornado框架blog模块分析与使用
Nov 21 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
使用Python神器对付12306变态验证码
Jan 05 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
python二进制文件的转译详解
Jul 03 Python
代码实例讲解python3的编码问题
Jul 08 Python
基于Python获取城市近7天天气预报
Nov 26 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
Feb 07 Python
python 瀑布线指标编写实例
Jun 03 Python
Python 如何实现数据库表结构同步
Sep 29 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
php汉字转拼音的示例
2014/02/27 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
Jquery 学习笔记(一)
2009/10/13 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
Python二分查找详解
2015/09/13 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
python绘制简单彩虹图
2018/11/19 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
教育学专业毕业生的自我评价
2013/11/21 职场文书
热门专业求职信
2014/05/24 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
同学聚会通知书
2015/04/20 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
Python实现排序方法常见的四种
2021/07/15 Python
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
sass 常用备忘案例详解
2021/09/15 HTML / CSS
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers
Java实现给Word文件添加文字水印
2022/02/15 Java/Android