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处理二进制数据的方法
Jun 03 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
用Django写天气预报查询网站
Oct 21 Python
Django model反向关联名称的方法
Dec 15 Python
python 遍历pd.Series的index和value
Nov 26 Python
基于pytorch的lstm参数使用详解
Jan 14 Python
python实现飞机大战项目
Mar 11 Python
Python调用shell命令常用方法(4种)
May 11 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
实现Python3数组旋转的3种算法实例
Sep 16 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读取csv文件内容的详解
2013/06/18 PHP
php常用的工具开发整理
2019/09/26 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
2014/04/02 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
JavaScript+canvas实现七色板效果实例
2016/02/18 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python的链表基础知识点
2020/09/13 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
花卉与景观设计系大学生求职信
2013/10/01 职场文书
求职简历自我评价范例
2014/03/12 职场文书
个人存款证明书
2014/10/18 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
Python面向对象编程之类的概念
2021/11/01 Python