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 13 Python
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
python写日志封装类实例
Jun 28 Python
python插入排序算法实例分析
Jul 03 Python
Python变量作用范围实例分析
Jul 07 Python
Python+Django搭建自己的blog网站
Mar 13 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
Python自动化操作实现图例绘制
Jul 09 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不用正则采集速度探究总结
2008/03/24 PHP
php heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
PHP通过header实现文本文件下载的代码
2010/08/08 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
PHP设计模式之结构模式的深入解析
2013/06/13 PHP
php生成随机颜色的方法
2014/11/13 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
PDO::inTransaction讲解
2019/01/28 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
python GUI实例学习
2017/11/21 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
股权收购意向书
2014/04/01 职场文书
司机岗位职责说明书
2014/07/29 职场文书
合同和协议有什么区别?
2014/10/08 职场文书