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利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
python+flask实现API的方法
Nov 21 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
Django实现跨域请求过程详解
Jul 25 Python
如何卸载python插件
Jul 08 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 Python
windows安装python超详细图文教程
May 21 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
我的论坛源代码(十)
2006/10/09 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
初识NodeJS服务端开发入门(Express+MySQL)
2017/04/07 NodeJs
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
python清除字符串里非字母字符的方法
2015/07/02 Python
Django中Forms的使用代码解析
2018/02/10 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
开业主持词
2014/03/21 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
委托公证书样本
2015/01/23 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis