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中关于日期时间处理的问答集锦
Mar 08 Python
Python使用正则匹配实现抓图代码分享
Apr 02 Python
用Python实现一个简单的多线程TCP服务器的教程
May 05 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
python网络应用开发知识点浅析
May 28 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Python 从attribute到property详解
Mar 05 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
探讨file_get_contents与curl效率及稳定性的分析
2013/06/06 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
解析php取整的几种方式
2013/06/25 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
element-ui表格数据转换的示例代码
2018/08/24 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
Python3安装Pymongo详细步骤
2017/05/26 Python
Python3 Random模块代码详解
2017/12/04 Python
django站点管理详解
2017/12/12 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
python flask中动态URL规则详解
2019/11/22 Python
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
在职证明书模板
2015/06/15 职场文书