迭代器的应用,管道流筛选

#需求迭代器的应用 #文件名:a.txt,文件内容如下: ‘‘‘ apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chichen 10 3 ‘‘‘ #实现功能:cat a.txt | grep apple #需求1:定义迭代器函数cat #需求2:定义迭代器函数grep #需求3:模拟管道的功能,将cat的处理结果作为grep的输入
 1 def cat(file):     #定义阅读文件内容的函数
 2     with open(file,"r") as f:
 3         while True:
 4             try:
 5                 line = f.readline()  #阅读文件一行一行的读
 6                 yield line          #返回每行的值
 7             except StopIteration:
 8                 break
 9
10 def grep(pattern,lines):   #定义筛选函数
11     for line in lines:     #遍历文件内容的每一行
12         if pattern in line:    #满足筛选条件,返回筛选值
13             yield line
14
15 lines = cat("a.txt")  #生成阅读文件内容的迭代器
16 result = grep("apple",lines)  #生成筛选值的迭代器
17 for i in result:  #遍历筛选值,打印结果
18     print(i)

				
时间: 2024-08-04 10:12:28

迭代器的应用,管道流筛选的相关文章

Java IO7:管道流、对象流

前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常见的流类.当然除了这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流. 管道流 管道流主要用于连接两个线程的通信.管道流也分为字节流(PipedInputStream.PipedOutputStream)和字符流(PipedReader.PipedWriter).比如一个Pipe

JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程

IO-05内存操作流06管道流

JAVA中可以将输出的位置设置在内存上,此时使用ByteArrayInputStream,ByteArrayOutputStream来完成输入,输出功能. 利用这两个类实现大小字母的转换: package lianxijihe; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; impo

java管道流PipedStream

管道流的主要作用是可以进行两个线程间的通信

黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile

------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 黑马程序猿--25.打印流.合并流.对象序列化,管道流,RandomAccessFile /* IO流的打印流:专门用于打印的流 字节打印流PrintStream PrintStream的构造函数能够接收file对象,String型字符串路

MVC5-1 ASP.NET的管道流

MVC5 和WebForm的区别 WebForm是一个Page贯穿了一个.CS代码. 1对1 = 耦合在一起 MVC在Controller中将 bihind和page进行了分离. 多对多 = 松耦合 对于MVC来说是通过action返回相应的View VS的调用堆栈 Http管道的大致流程 PipelineRumtime => HttpRuntime => HttpApplication => MvcHandler => Controller => HomeControlle

MVC5-2 MVC的管道流与路由

自定义Modue与Hander 之前讲了管道流中的Module与Hndler.现在我们可以去自定义Module和Handler Module 其实很简单,一共需要三个步骤 定义一个类去继承IHttpModule.并实现接口,这里推荐类以Module结尾 在Init方法中注册我们所需要的事件,完成拦截器. 在WebConfig的System.webServer节点中配置Modules Handler 和自定义Module类似 创建一个类去继承IHttpHandler接口,并实现接口. 在Proce

java 管道流PipedOutputStream和PipedInputStream基本操作

java的管道流要PipedOutputSream和PipedInputStream结合起来使用,管道流主要用来进行线程之间的通信. 上代码 import java.io.*; public class PipeStreamDemo { public static void main(String[] args) { PipedOutputStream out=null; PipedInputStream in=null; Sender sender=new Sender(); Receiver