python是一种面向过程的编程语言_python协成与面向过程编程

import os

import functools

def init(func):

@functools.wraps(func) #让warpper的帮助信息同eater相同

def warpper(*args,**kwargs):

'我是warpper函数'

g=func(*args,**kwargs)

next(g)

return g

return warpper

#面向过程的编程

#扩展性差

def get_file(abs_path,target):

'''

生产一个个文件

:param abs_path:传进来的决对路径

:param target: 下一个目标

:return: 返回绝对文件的路径

'''

g=os.walk(abs_path)

for top_dir,current_dir,files in g:

for file in files:

abs_file_path=r'%s\%s' %(top_dir,file)

target.send(abs_file_path)

@init

def opener(target):

'''

打开文件

:return: 返回句柄

:param target 下一个目标

'''

while True:

abs_file_path=yield

with open(abs_file_path) as f:

target.send((f,abs_file_path))

@init

def get_lines(target):

'''

读取每一行的内容

:param target: 下一个目标

:return:返回每一行的内容

'''

while True:

f,abs_file_path=yield

for line in f:

target.send((line,abs_file_path))

@init

def grep(pattern,target):

'''

过滤关键字

:param pattern:匹配关键字

:param target: 下一个目标

:return: 返回文件

'''

while True:

line,abs_file_path=yield

if pattern in line:

target.send(abs_file_path)

@init

def printer():

'''

打印功能

:return:输出信息

'''

while True:

abs_file_path=yield

print(abs_file_path)

get_file(r'D:\test',opener(get_lines(grep('zzl',printer()))))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值