python 递归遍历文件夹,并打印满足条件的文件路径实例
作者:nolimite 发布时间:2023-08-07 07:22:48
标签:python,递归,遍历,文件夹,文件路径
题目:利用协程来遍历目录下,所有子文件及子文件夹下的文件是否含有某个字段值,并打印满足条件的文件的绝对路径。
#!/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.简化了程序的复杂度
缺点:不具有可扩展性(内部耦合度太高)
具体应用场景:那些长期不需要怎么变化的软件。如系统
来源:http://www.cnblogs.com/yangzhenwei123/p/6759228.html


猜你喜欢
- 本文实例讲述了Python实现读取文件最后n行的方法。分享给大家供大家参考,具体如下:# -*- coding:utf8-*-import
- QCalendarWidget 是日历控件。它允许用户以简单和直观的方式选择日期。#!/usr/bin/python3# -*- codin
- 代码如下:SELECT * FROM Orders WHERE OrderGUID IN('BC71D821-9E25-
- 情景是这样的:在C#中调用python脚本进行post请求,python脚本中使用了requests包。Python的开发环境我们有比较多的
- 模型实例方法str():在将对象转换成字符串时会被调用。save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或upd
- 目录一个不那么方便的解决方案:实战演练网站在线转换Postman今天介绍个神奇的网站!堪称爬虫偷懒的神器!我们在写爬虫,构建网络请求的时候,
- 1.通过工具"DTS"的设计器进行导入或者导出DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一
- 上面两个简单的Sql,我们从表面理解,查询的最终结果应该是一样的,但实际结果却和我们想象的不一样第一条sql查询的结果有一条数据第二条sql
- 导读:SQL Server数据迁移的知识之前已经为大家介绍了很多,比如SQL Server数据库迁移方法,接下来就为大家详细介绍SQL Se
- 在使用selenium去获取淘宝商品信息时会遇到登录界面这个登录界面处理的难度在于滑动验证的实现,有的人使用微博登录,避免了滑动验证,那可不
- 前言要将图片转换为字符图其实很简单,我们首先将图片转换为灰度图像,这样图片的每个像素点的颜色值都是0到255,然后我们选用一些在文字矩形框内
- 本文实例讲述了python中os操作文件及文件路径的方法。分享给大家供大家参考。具体分析如下:python获取文件上一级目录:取文件所在目录
- 一、安装node.js 官网下载下载地址:Download | Node.js(1)下载安装包安装过程很简单,全部next即可。(
- 1.1MyBatis简介 MyBatis 是一个可以自定义SQL、存储过程和高级
- AlexNet (2012 )2012 年,AlexNet 由 Alex Krizhevsky 为 ImageNet 大规模视觉识别挑战赛
- 一、闭包闭包的形成条件:1.函数嵌套。2.内部函数使用了外部函数的变量或者参数。3.外部函数返回了使用外 部变量的内部函数。二、一个简单的例
- 前言前几天写了一篇MySQL高并发生成唯一订单号的方法,有人私信问有没有SQL server版本的,今天中午特地写了SQL server版本
- 一、layui下拉复选实现的背景:实现一个管理员拥有多个权限二、 具体实现://依赖资源<link rel="stylesh
- 很多网站都有“浏览历史”这个功能,通常都是显示在页面的一侧,特别是一些购物网站,这个功能会让用户使用网站的体验好一些;例如当当网或淘宝网都有
- 学习复杂代码的最好方法是简化:(function(win, undefined) { var jQuery = f