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中每次处理一个字符的5种方法
May 21 Python
Python脚本实时处理log文件的方法
Nov 21 Python
使用Python对Access读写操作
Mar 30 Python
python中如何使用朴素贝叶斯算法
Apr 06 Python
Python星号*与**用法分析
Feb 02 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
Python 类的特殊成员解析
Jun 20 Python
python爬取哈尔滨天气信息
Jul 14 Python
keras.layer.input()用法说明
Jun 16 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 Python
python实现会员信息管理系统(List)
Mar 18 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基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
webpack打包nodejs项目的方法
2018/09/26 NodeJs
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
深入解读Python解析XML的几种方式
2016/02/16 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
C,C++的几个面试题小集
2013/07/13 面试题
教师职称自我鉴定
2014/02/12 职场文书
大学生心理活动总结
2014/07/04 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers