day5_ grep -rl 'python' /root 功能 的实现

import os

def init(func):
def wrapper(*args,**kwargs):
res=func(*args,**kwargs)
next(res)
return res
return wrapper

@init
def search(target):
while True:
search_path=yield
g=os.walk(search_path)
for par_dir,_,files in g:
for file in files:
file_abs_path=r'%s\%s' %(par_dir,file)
# print(file_abs_path)
target.send(file_abs_path)

@init
def opener(target):
while True:
file_abs_path=yield
# print('opener func==>',file_abs_path)
with open(file_abs_path,encoding='utf-8') as f:
target.send((file_abs_path,f))

@init
def cat(target):
while True:
file_abs_path,f=yield #(file_abs_path,f)
for line in f:
tag=target.send((file_abs_path,line))
if tag:
break
@init
def grep(target,pattern):
tag=False
while True:
file_abs_path,line=yield tag
tag=False
if pattern in line:
tag=True
target.send(file_abs_path)

@init
def printer():
while True:
file_abs_path=yield
print(file_abs_path)



x=r'C:\Users\Administrator\PycharmProjects\day5\a'



g=search(opener(cat(grep(printer(),'python'))))
print(g)

g.send(x)
posted @ 2017-05-31 15:12  昂达达  阅读(469)  评论(0编辑  收藏  举报