python操作内存_python 之更省内存的方式读取文件

#!/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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值