要求:在文件里递归找到关于包含“Python”内容的文件的绝对路径并打印出来

#定义阶段
import os,time
def init(func): #装饰器的作用是使下面的生成器初始化,yield等着被传值
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
next(res) #调用生成器初始化
return res
return wrapper
@init
def search(target):
'''找到文件的绝对路径'''
while True:
dir_name = yield
print("search开始工作:文件的绝对路径")
time.sleep(2) #加上睡眠时间是为了使看着更有效果
g = os.walk(dir_name)
for i in g:
for j in i[-1]:
file_path = "%s\\%s"%(i[0],j)
target.send(file_path) #
@init
def opener(target):
'''打开文件,获取文件句柄'''
while True:
file_path = yield
print("opener开始工作:获取文件句柄")
time.sleep(2) #加上睡眠时间是为了使看着更有效果
with open(file_path,encoding="utf8") as f:
target.send((file_path,f))
@init
def cat(target):
'''读取文件内容'''
while True:
file_path,f = yield
print("cat开始工作:读取文件内容")
time.sleep(0.3) #加上睡眠时间是为了使看着更有效果
for line in f:
target.send((file_path,line))
@init
def grep(pattern,target):
'''过滤一行内容中有需要内容,就把路径传给下面'''
while True:
file_path,line = yield
print("grep开始工作:过滤内容")
if pattern in line :
target.send(file_path)
@init
def printer():
'''打印文件路径'''
while True:
file_path = yield
print("printer开始工作:打印文件的绝对路径")
time.sleep(2)
print(file_path)
#调用阶段
g = search(opener(cat(grep("python",printer()))))
g.send("E:\michael")
---------------以下是输出结果------------------
E:\michael\aa1.txt
E:\michael\aa\a1.txt

  面向过程的编程思想:

    流水线式的编程思想,在设计程序时,需要把整个流程设计出来。

  优点:

    1:体系结构更加清晰

    2:简化程序的复杂度

  缺点:

    可扩展性极其的差,所以说面向过程的应用场景是,不需要经常变化的软件,如:linux内核,httpd,git等软件。

Python基础之面向过程编程的更多相关文章

  1. python基础之面向过程编程,模块

    面向过程编程 面向过程的核心是过程,指的是解决问题的步骤,即先干什么再干什么,就好像设计一条流水线. 优点:复杂的问题流程化,进而简单化 缺点:可扩展性差,修改流水线的任意一个阶段,都会牵一发而动全身 ...

  2. Python 迭代器-生成器-面向过程编程

    上节课复习:1. 函数的递归调用 在调用一个函数的过程中又直接或者间接地调用了函数本身称之为函数的递归 函数的递归调用有两个明确的阶段: 1. 回溯 一层一层地调用本身 注意: 1.每一次调用问题的规 ...

  3. python基础(23):面向过程与面向对象的优劣、初识面向对象

    1. 面向过程与面向对象的优劣 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程 ...

  4. Python函数之面向过程编程

    一.解释 面向过程:核心是过程二字,过程即解决问题的步骤,基于面向过程去设计程序就像是在设计,流水线式的编程思想,在设计程序时,需要把整个流程设计出来, 一条工业流水线,是一种机械式的思维方式 二.优 ...

  5. 匿名函数 python内置方法(max/min/filter/map/sorted/reduce)面向过程编程

    目录 函数进阶三 1. 匿名函数 1. 什么是匿名函数 2. 匿名函数的语法 3. 能和匿名函数联用的一些方法 2. python解释器内置方法 3. 异常处理 面向过程编程 函数进阶三 1. 匿名函 ...

  6. python函数:匿名函数、函数递归与二分法、面向过程编程

    今天主要讲三大部分内容: 一.匿名函数二.函数递归与二分法三.面向过程编程 一.匿名函数: """ 1. 什么时匿名函数 def定义的是有名函数:特点是可以通过名字重复调 ...

  7. day22 yield的表达式的应用,面向过程编程,内置函数前几个

    Python之路,Day10 = Python基础10 生成器表达式: (i for i in range(10) if i > 5)os.walk(r'文件路径')返回一个迭代器, 第一次ne ...

  8. PYTHON-匿名函数,递归与二分法,面向过程编程

    """匿名函数1 什么是匿名函数 def定义的是有名函数:特点是可以通过名字重复调用 def func(): #func=函数的内存地址 pass 匿名函数就是没有名字的 ...

  9. python基础知识14---迭代器、生成器、面向过程编程

    阅读目录 一 迭代器 二 生成器 三 面向过程编程 一 迭代器 1 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢? #迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初 ...

随机推荐

  1. zabbix系列 ~ mongo监控相关

    ,一 简介: 我们来谈谈mongo的监控二 核心命令    rs.status() 关注复制集群是否健康    db.serverStatus() 关注实例整体性能三 目标解读   主要来解读下db. ...

  2. zabbix系列 ~ 自动监控多实例功能

    一 场景     监控mongo的多实例端口二 目标 定制一套模板,根据不同的端口进行批量监控项的生成三 步骤  1 编写py脚本实现端口josin化输出,以便zabbix_server能进行识别  ...

  3. Nginx系列1:ubuntu16.04编译出适合自己的nginx服务器

    1.下载nginx nginx官网:nginx.org tar.gz文件 解压缩命令: wget https://nginx.org/download/nginx-1.14.2.tar.gz #下载n ...

  4. CXF2.7整合spring发布webservice

    ---------==========--服务端发布webservice-=============-------- 1.需要的jar包: 2.包结构 3.代码 1.实体类 package cn.ql ...

  5. 20165231 实验一 Java开发环境的熟悉

    实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:王杨鸿永 学号:20165231 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 ...

  6. ES6学习笔记六(Iterator和for..of)

    { let arr=['hello','world']; let map=arr[Symbol.iterator](); //返回false时继续执行,true停止执行! console.log(ma ...

  7. mysql数据库 详解 之 自学成才1

    一.学习目录 1.认识数据库和mysql 2.mysql连接 3.入门语句 4.详解列类型 5.增删改查 INSERT INTO  表名(列1,……  列n)  VALUES(值 1,……  值 n) ...

  8. Windowns下使用SecuretCRT编写脚本增加高亮

    作者:邓聪聪 secureCRT设置高亮1)修改环境变量:export TERM=xterm-color 2)增加VIM高亮:vim ~/.vimrc   set syntax=on colorsch ...

  9. English常用短语

    (1) be waken  by    被什么吵醒 (2) wake up !           快醒醒 (3)  put the flames    /fleimz/               ...

  10. 题解-bzoj4320 Homework

    Problem bzoj4320 Solution 前置技能:分块+线段树+卡常+一点小小的数学知识 考试时A的 这种题无论怎么处理总有瓶颈,套路分块,设\(k\)以下的插入时直接暴力预处理,查询时直 ...