#!/usr/bin/env python # -*- coding: utf-8 -*- #tell() 方法返回文件的当前位置,即文件指针当前位置。 #使用with的目的是为里可以自动close掉文件对象 #生成器简单小粒子 def foo1(): yield 1 yield 2 yield 3 yield 4 for i in foo1(): print(i) ‘‘‘ 如执行:print(foo1()) 调用这个函数的时候,返回的是一个生成器 生成器只有遍历的时候函数里的代码才会去执行,并且每一次循环只执行一条 生成器是一个带yield语句的函数 执行过程简单概述: 1、首先执行函数,然后遍历,遍历到第一条的时候,执行yield 1 2、遍历到第2条的时候,不经过yield 1,而是直接执行yield 2 3、以此类推 4、特点:会暂时保存执行的位置 ‘‘‘ #文件遍历小粒子 #普通函数实现 #定一个需读取的文件 files = ‘/etc/passwd‘ #普通函数 def foo2(): with open(files,‘r‘) as f: print(‘文件名: ‘, f.name) seek_id = 0 while True: f.seek(seek_id) data = f.readline() if data: #获取文件指针的当前位置 seek_id = f.tell() print(‘文件指针当前位置: %d‘ %(seek_id)) print(‘读取的数据为: %s‘ % (data)) else: break #直接调用这个函数 foo2() #生成器实现 def foo(): seek_id = 0 while True: with open(files,‘r‘) as f: f.seek(seek_id) data = f.readline() if data: seek_id = f.tell() print(‘文件指针当前位置: %d‘ %(seek_id)) yield data else: break #通过遍历生成器来执行函数里面的代码 for val in foo(): print(val)
时间: 2024-11-05 14:59:11