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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)







本文出自 “FA&IT运维-Q群:223843163” 博客,请务必保留此出处http://freshair.blog.51cto.com/8272891/1870539

以上是关于python 之更省内存的方式读取文件的主要内容,如果未能解决你的问题,请参考以下文章

python读取较大数据文件

Python 读取大文件的方式

**大文件读取

用python实现读写文件常见操作方式

Python读取大文件

如何通过python读取30G parquet文件