python基础——面向过程的编程思想及举例

面向过程的编程思想

1、面向过程的编程思想及举例

写程序时:

要先想功能,分步实现

2、 os模块中walk输出目录中文件路径

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

Send可以传多个值,但是必须是元组类型

面向过程的编程思想

像流水线,代码简洁,体系结构

实现对一个目录下面(包含子目录下面)有一行包含过滤字符串就输出其文件名的绝对路径
  C:\python_fullstack_wen\day24\wen
"""

import time,os
#定义
def init(func):
    "装饰器"
    def wrapper(*args,**kwargs):
        res=func(*args,**kwargs)
        next(res)
        return res
    return wrapper

@init
def search(target):
    "找到目录下所有文件名的绝对路径"
    while True:
        dir_path=yield
        g=os.walk(dir_path)
        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
        with open(file_path) as f:
            target.send((file_path,f))
@init
def cat(target):
    "查看文件,返回每行内容"
    while True:
        file_path,f=yield
        for line in f:
            target.send((file_path,line))
@init
def grep(pattern,target):
    "过滤这行,如果符合返回文件路径"
    while True:
        file_path,line=yield
        if pattern in line:
            target.send(file_path)
@init
def printer():
    "打印"
    while True:
        file_path=yield
        print(file_path)

#调用
g=search(opener(cat(grep("wenyanjie",printer()))))
g.send("C:\python_fullstack_wen\day24\wen")

简单方法实现上面程序 

import os

def search(dir_name, partten):
    g = os.walk(dir_name)
    for i in g:
        for j in i[-1]:
            file_path = i[0] + "\\" +j
            with open(file_path) as f:
                for line in f:
                    if partten in line:
                        print(file_path)

search("c:\\test", "python")
时间: 2024-08-09 05:00:35

python基础——面向过程的编程思想及举例的相关文章

python/面向过程的编程思想及举例

python基础--面向过程的编程思想及举例 面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下. Send可以传多个值,但是必须是元组类型 面向过程的编程思想 像流水线,代码简洁,体系结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

面向过程的编程思想

1.面向过程的编程思想 核心是'过程'二字,过程即解决问题的步骤,即先干什么,在干什么.... 基于面向过程编写程序就好比在设计一条流水线,,是一种机械式的思维方式. 2 总结优缺点: 优点:复杂的问题流程化,进而简单化 缺点:修改一个阶段,其他阶段都有可能需要作出修改,牵一发而动全身,即扩展性极差. 应用:用于扩展性要求低的场景 原文地址:https://www.cnblogs.com/lx3822/p/8684673.html

python基础---面向过程编程

面向过程编程 核心是过程二字,过程即解决问题的步骤,基于面向过程去设计程序就像是在设计一条工业流水线,是一种机械式的思维方式 优点:程序结构清晰可以把复杂的问题简单化,流程化 缺点:可扩展性差,一条流线只是用来解决一个问题 应用场景:linux内核,git,httpd,shell脚本 练习:过滤目录下文件内容包含error的文件 grep –rl 'error' /dir 使用os模块walk方法: os.walk会把目录下的二级目录和文件做成一个迭代器,多次使用实现文件路径的拼接 #grep 

面向对象和面向过程的编程方式的理解

面向对象和面向过程的区别? 如果说面向对象和面向过程的具体区别,最深入的地方应该是去看设计模式,推荐大话设计模式那本书,讲的比较好.本人只不过简单叙述下,重点是如何进行面向对象和面向过程的编程,只有会编程了,才能真正懂得面向对象和面向过程的区别.否则都是纸上谈兵. 面向过程:是以计算机线性思维的方式进行编程.一步一个脚印的执行.本身也没有问题,但是如果遇到需求多变的情况,或者功能的添加和删除,将极其影响原来的程序代码,必须要重写或者修改,或者重新组织原来的代码. 面向对象:在对需求多变的时候,不

【C++系列小结】面向过程的编程风格

前言 编程语言有面向过程和面向对象之分,因此编程风格也有所谓的面向过程的编程和面向对象的编程,而且语言的性质不会限制编程的风格. 这里主要说一下面向过程的编程. "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想. C语言是面向过程的编程语言,但是依然可以写出面向对象的程序,同样C++也当然可以写出面向过程的程序咯. 如果我们把所有的程序代码都写在一个main函数里面,那么这个程序显然会显得很不和谐吧.理想一点的做法是我们把一些看起来和main函数逻辑上关

面向对象的编程和面向过程的编程有什么区别

C语言是面向过程的编程,它的最重要特点是函数,通过主函数来调用一个个子函数.程序运行的顺序都是程序员决定好了的.它是我学的第一种程序语言. C++是面向对象的编程,类是它的主要特点,程序执行过程中,先由主函数进入,定义一些类,根据需要,执行类的成员函数,过程的概念被淡化了(实际上过程还是有的,就是主函数的那些语句),类就是对象,所以我们称之为面向对象程序设计. 不同点:1.编程模型 所有计算机均由两种元素组成:代码和数据.精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕&

python 3 面向过程编程

python 3 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就像设计好一条工业流水线,是一种机械式的思维方式. 1.优点:程序结构清晰,可以把复杂的问题简单化,流程化. 2.缺点:可扩展性差,改动一个地方很可能要改多个地方,牵一发而动全身. 3.应用场景:linux内核,git,httpd,shell脚本. grep -rl 'error' /dir/ def init(func): def wrapper(*args,**kwargs): g=func(*a

Python之面向过程和面向对象的区别

一.面向过程 1.面向过程:核心是过程二字,过程指的是解决问题的步骤,好比如设计一条流水线,是一种机械式的思维方式. 就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 .基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决. 2.优缺点:  优点:将复杂的问题流程化,进而简单化.  缺点:扩展性差 3.实例:面向过程式的登录注册程序 import json,re

python基础5-面向对象编程

1.类和对象之封装 #方法1 def Bar(): print "Bar" def Hello(name): print "i am %s" %(name) #方法2 class Foo(): def Bar(self): print 'Bar' def Hello(self,name): print "i am %s" %name 对于数据库的增删改查 ####方式1 def fetch(hostname,port,username,passw