本文共 1166 字,大约阅读时间需要 3 分钟。
import os
def init(func):
def wrapper(*args, **kwargs):
g = func(*args, **kwargs)
next(g)
return g
return wrapper
# 第一阶段:找到所有文件的绝对路径
@init
def search(target):
while True:
filepath = yield
g = os.walk(filepath)
for pardir, _, files in g:
for file in files:
abspath = r'%s\%s' % (pardir, file)
target.send(abspath)
# search(r'C:\Users\Administrator\PycharmProjects\python18期周末班\day5\aaa')
# g=search()
# g.send(r'C:\Python27')
# 第二阶段:打开文件
@init
def opener(target):
while True:
abspath = yield
with open(abspath, 'rb') as f:
target.send((abspath, f))
# 第三阶段:循环读出每一行内容
@init
def cat(target):
while True:
abspath, f = yield # (abspath,f)
for line in f:
res = target.send((abspath, line))
if res: break
# 第四阶段:过滤
@init
def grep(pattern, target):
tag = False
while True:
abspath, line = yield tag
tag = False
if pattern in line:
target.send(abspath)
tag = True
# 第五阶段:打印该行属于的文件名
@init
def printer():
while True:
abspath = yield
print(abspath)
g = search(opener(cat(grep('os'.encode('utf-8'), printer()))))
# g.send(r'C:\Users\Administrator\PycharmProjects\python18期周末班\day5\aaa')
g.send(r'C:\Users\Administrator\PycharmProjects\python18期周末班') ##指定父目录
# a1.txt,a2.txt,b1.txt
转载地址:https://blog.csdn.net/weixin_39609822/article/details/110321157 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!