python生成器的表达式形式

来源:互联网 发布:手机数据永久删除 编辑:程序博客网 时间:2024/05/22 10:27

Python版本:3.6.1

python生成器的表达式形式 可以将返回值放入一个列表 从而不停的获取值

#!/usr/bin/env python# -*- coding:utf-8 -*-#Author:xp#blog_url: http://blog.csdn.net/wuxingpu5/article/details/71209731#模拟grepimport os#windows下路径是两个斜杠 需要加r  raw string 原生字符串#g=os.walk(r'D:\code\py\py3\Coursepy\L05\a')# # for i in g:# #     print(i)# def search(search_path):#     g=os.walk(search_path)#     for par_idr,_,files in g:  #循环取出路径与文件#         for file in files:#             file_abs_path=r'%s%s' %(par_idr,file)#             print(file_abs_path)# search(r'D:\code\py\py3\Coursepy\L05\a')#====================================================#再次更改为yield模式 实现可以不停的sendimport osdef init(func):    def wrapper(*args,**kwargs):        res =func(*args,**kwargs)        next(res)        return res    return wrapper@initdef search():    while True:        search_path=yield        g=os.walk(search_path)        for par_idr,_,files in g:  #循环取出路径与文件            for file in files:                file_abs_path=r'%s%s' %(par_idr,file)                print(file_abs_path)x=r'D:\code\py\py3\Coursepy\L05\a'g=search()g.send(x)@initdef opener():    while True:        file_abs_path=yield        with open(file_abs_path,encoding='utf-8') as f:#            target.send(file_abs_path,f)             passo=opener()o.send('3.py')

具体应用参见下篇  模拟grep 过滤

原创粉丝点击