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)
				
时间: 2024-11-05 14:59:11

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

以最省内存的方式读取本地资源的图片

代码实现方式:(布局的背景图较大,可能在内存吃紧的时候造成oom或者奔溃,以最省内存的方式读取本地资源的图片) relativeLayout_getprize = (RelativeLayout) findViewById(R.id.relativeLayout_getprize); Bitmap readBitMap = BitmapUtil.readBitMap(this, R.drawable.zjbj); Drawable drawable = new BitmapDrawable(re

JAVA多种方式读取文件

package com.file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; public c

解决python疑难杂症python—文件迭代操作,教你读取文件的多种方法

要读取一个文件有很多种方式:按字节数读取.按行读取.按段落读取.一次性全部读取等等.如果不是深入的操作文件数据,按行读.写是最通用的方式. 以下是下面测试时使用的文件a.txt的内容: 1 first line 2 second line 3 third line 在Python中,readline()函数可以一次读取一行,且每次都是前进式的读取一行,读到文件结尾的时候会返回空字符串. 1 >>> f = open('a.txt') 2 >>> f.readline()

直接整个读取文件和逐行读取

1. 一次性读取文件的所有行: fp = open(filename): for eachLine in fp: print eachline fp.close() # 这种方式实用于文件大小合适的文件, 如果文件太大读取过程会占用太多的内存. 2. 逐行读取文件进行操作. fp = open(filename): while True: line = fp.readline() if len(line) == 0: break print line fp.close() #当文件较大时可以使用

java 读取文件流

搬运自速学堂:https://www.sxt.cn/Java_jQuery_in_action/ten-iqtechnology.html JAVA中IO流体系: 四大IO抽象类 ·InputStream 此抽象类是表示字节输入流的所有类的父类.InputSteam是一个抽象类,它不可以实例化. 数据的读取需要由它的子类来实现.根据节点的不同,它派生了不同的节点流子类 . 继承自InputSteam的流都是用于向程序中输入数据,且数据的单位为字节(8 bit).       常用方法: int

C语言:字符串读取流读取文件中的数据

#include<stdio.h> int main() { //定义文件指针 FILE *f = NULL; //打开文件 f = fopen("1.txt","r"); if(f==NULL) { printf("文件读取失败!\n"); return -1; } //读文件 const int SIZE = 100; char buf[SIZE];//用字符数组做读文件的缓冲区 while(!feof(f)) { //字符串方式

FileReader读取文件

前言:FileReader是一种异步文件读取机制,结合input:file可以很方便的读取本地文件. input:file 在介绍FileReader之前,先简单介绍input的file类型. <input type="file" id="inputBox"> input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口,文字表示对文件的描述(大部分情况下为文件名):file类型的input会有files属性,保存着文件的相关信息. 点

java非常好用的读取文件的流的代码

学过java的都知道java中有非常多的读取文件流的操作.这个要回到javase的io操作了.io流说实话,初学者学的肯定会非常混乱,那么多流,什么输入流,输出流,什么文件流,什么字节流,等等.我在这里只能简单的给大家普及一下java的文件操作了.最后再介绍哪种方式读取文件的方法好用. 首先是File对象,File对象只是一个文件对象,比如你要操作哪个文件,就new File("传入文件的路径和名字"),要不然程序怎么能知道你要读的是哪个文件呢,或者要把哪段内容写入到哪个文件呢?,Fi

python读取文件小结

python读取文件小结 你想通过python从文件中读取文本或数据. 一.最方便的方法是一次性读取文件中的所有内容并放置到一个大字符串中: all_the_text = open('thefile.txt').read( )     # 文本文件中的所有文本 all_the_data = open('abinfile','rb').read( )    # 二进制文件中的所有数据 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用的文件对象占用