#应用:grep -rl 'root' /etc

import os
def deco(func):
def wrapper(*args):
g=func(*args)
next(g)
return g
return wrapper start_path=r'/Users/mona/Desktop/python学习/study/a' #阶段一:递归地找文件的绝对路径,把路径给阶段二
@deco
def search_func(target):
while True:
start_path=yield
g=os.walk(start_path)
for par_dir,_,files in g:
for file in files:
file_path=r'%s/%s'%(par_dir,file)
target.send(file_path) #阶段二:收到文件路径,打开文件获取对象,并把文件对象发给阶段三
@deco
def open_func(target):
while True:
file_path=yield
with open(file_path,'r',encoding='utf-8') as f:
target.send((file_path,f)) #阶段三收到文件对象,读取每一行,并把内容发给阶段四
@deco
def cat_func(target):
while True:
file_path,f=yield
for line in f :
res=target.send((file_path,line))
if res:
break #阶段四:收到内容,判断root是否在内容中,把符合条件的文件名发给阶段五
@deco
def gerp_func(target,pattern):
tag=False
while True:
file_path,line=yield tag
tag=False
if pattern in line:
target.send(file_path)
tag=True #阶段五:收到文件名,并打印
@deco
def printer_func():
while True:
filename=yield
print(filename) g=search_func(open_func(cat_func(gerp_func(printer_func(),'root'))))
g.send(start_path)

面向过程编程实例------grep-rl 'root 路径的更多相关文章

  1. yield的表达式形式、面向过程编程(grep -rl 'root' /etc)

    一.yield的表达形式 def foo(): print('starting') while True: x=yield None#return 2 print('value :',x) g=foo ...

  2. Python练习-面向过程编程-模拟Grep命令

    其实这个面向过程编写程序,是编写程序的基础,所以一定要好好掌握 此程序涉及知识点:装饰器,生成器,协程器应用 # 编辑者:闫龙 import os Distinct = [] #定义一个列表用于判断重 ...

  3. Day4 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式、序列化与反序列化

    一.装饰器 一.装饰器的知识储备 1.可变长参数  :*args和**kwargs def index(name,age): print(name,age) def wrapper(*args,**k ...

  4. Python开发基础-Day10生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 # yield的表达式形式 def foo(): print('starting') while True: x=yield #默认返回为空,实际上为x=yield No ...

  5. python基础之生成器表达式形式、面向过程编程、内置函数部分

    生成器表达式形式 直接上代码 1 # yield的表达式形式 2 def foo(): 3 print('starting') 4 while True: 5 x=yield #默认返回为空,实际上为 ...

  6. 闭包、装饰器decorator、迭代器与生成器、面向过程编程、三元表达式、列表解析与生成器表达式

    一.装饰器 一.装饰器的知识储备 不想修改函数的调用方式,但是还想在原来的函数前后添加功能 1.可变长参数  :*args和**kwargs def index(name,age): print(na ...

  7. python3 面向过程编程思想,函数综合应用

    应用:grep -rl 'root' /etc 实现过滤文件的功能 import os def init(func): def wrapper(*args,**kwargs): g=func(*arg ...

  8. python--表达式形式的yield、面向过程编程、内置函数

    yield的表达式形式 def init(func): def wrapper(*args, **kwargs): g = func(*args, **kwargs) next(g) return g ...

  9. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

随机推荐

  1. golang解析xml

    解析xml标签或者html标签,都是xml文档格式.要是返回的html标签,可以用第三方依赖库goquery来解析. 下面说下,解析xml标签的格式.直接上代码,代码如下: package main ...

  2. Discuz! X 插件开发手册

      文件命名规范 Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范: 可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名. 被普通程序文件引用的程序文件, ...

  3. GIS开发离线地图应用-初识gis

    http://www.cnblogs.com/kevin-zlg/p/4611671.html 最新公司需要做一个基于gis地图的应用系统,由于之前公司项目中的电子地图模块都是我开发的,所以这个新系统 ...

  4. printf,sprintf,vsprintf

    printf,sprintf比较常用,vsprintf不常用. 1. 三个函数的声明: int printf (const char * szFormat, ...); int sprintf (ch ...

  5. Wireshark使用注意事项

    一直在使用老板的Wireshark,因为4G网络的逐步开通,越来越须要新版Wireshark来解析一些数据包. 在更换了新Wireshark的1.11.3后发现原来能够解析Gb口数据的NSIP不见了 ...

  6. ssl 生成证书

    使用OpenSSL生成证书 1.生成RSA密钥的方法 openssl genrsa -des3 -out privkey.pem 2048 这个命令会生成一个2048位的密钥,同时有一个des3方法加 ...

  7. OpenCV学习笔记:opencv_ml模块

    一,简介 该模块为opencv的机器学习(machine learning,ml)代码库,包含各种机器学习算法: 0, class CvStatModel ; class CvMLData; stru ...

  8. SQL.Cookbook 读书笔记4 插入更新和删除

    第四章 插入更新和删除 4.1 插入数据 ,'PROGRA','NEW YOURK'); 4.2 从一个表向另一个表中复制 insert into dept_east(deptno,dname,loc ...

  9. python发送邮件(yagmail模块)

    import yagmail user = 'xxxx@qq.com' passwd = 'xxxx' # 授权码,不是密码,需要在邮箱中设置,看邮箱类型,有的需要设置 res = yagmail.S ...

  10. socket listen/accept

    listen函数 摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定 ...