精华内容
下载资源
问答
  • python3读取大文件

    2021-05-08 10:14:36
    前段时间用python3读取大excel文件,读取过程中,内存耗尽,程序也报错了,本文记录一下python3读取大文件时内存耗尽的解决方法。 一、导入代码 原始代码,执行后内存耗尽 from openpyxl import load_workbook def...

    前段时间用python3读取大excel文件,读取过程中,内存耗尽,程序也报错了,本文记录一下python3读取大文件时内存耗尽的解决方法。
    excel文件有82M

    一、导入代码

    原始代码,执行后内存耗尽

    from openpyxl import load_workbook
    
    def read_excel():
    	# 打开excel文件
        wb = load_workbook(filename='客户资料.xlsx')
    
    	# 获取并打印 sheet 数量
        # print("sheet 数量:", wb.sheetnames, type(wb.sheetnames))
        sheet_ranges = wb[wb.sheetnames[0]]
    
    	# 计算处理进度
    	count, total = 0, 0
        # 获取行列数
        row, column = sheet_ranges.max_row, sheet_ranges.max_column
        total = row
        print(count, total, column)
        for sheet in sheet_ranges:
            count += 1
            print('进度:{0}%'.format(round(count * 100 / total, 2)), sheet[2].value)
    

    执行结果
    内存耗尽
    程序报内存错误

    改进后的代码,正常读取

    from openpyxl import load_workbook
    import io
    
    def read_excel():
    	# 打开excel文件
        xlsx_filename = '客户资料.xlsx'
        with open(xlsx_filename, "rb") as f:  # 解决读取打文件时,内存没释放导致内存耗尽的情况
            in_mem_file = io.BytesIO(f.read())
    
        wb = load_workbook(in_mem_file, read_only=True)
    
    	# 获取并打印 sheet 数量
        # print("sheet 数量:", wb.sheetnames, type(wb.sheetnames))
        sheet_ranges = wb[wb.sheetnames[0]]
    
    	# 计算处理进度
    	count, total = 0, 0
        # 获取行列数
        row, column = sheet_ranges.max_row, sheet_ranges.max_column
        total = row
        print(count, total, column)
        for sheet in sheet_ranges:
            count += 1
            print('进度:{0}%'.format(round(count * 100 / total, 2)), sheet[2].value)
    

    执行结果
    在这里插入图片描述
    在这里插入图片描述
    从上面截图可以看出处理过程中,内存占用不高,数据也读取完成。

    二、总结

    io.BytesIO能处理excel文件,还能处理文本文件、二进制文件等

    展开全文
  • Python3 读取大文件

    2018-01-29 20:53:50
    如何读取大文件,可以使用read(size),一次最多读取size个字节。 100G也是可以读取Python def read_in_chunks(file_object, chunk_size=1024): """把文件切割成一块块的读,...

    如何读取以大文件,可以使用read(size),一次最多读取size个字节。
    100G也是可以读取的

    Python
    def read_in_chunks(file_object, chunk_size=1024): """把文件切割成一块块的读,默认大小是1024k""" while True: data = file_object.read(chunk_size) if not data: break yield data
    1
    2
    3
    4
    5
    6
    7
    8
    def read_in_chunks(file_object, chunk_size=1024):
        """把文件切割成一块块的读,默认大小是1024k"""
        while True:
            data = file_object.read(chunk_size)
     
            if not data:
                break
            yield data
    Python
    def read_in_chunks(file_object, chunk_size=1024): """把文件切割成一块块的读,默认大小是1024k""" while True: data = file_object.read(chunk_size) if not data: break yield data f = open('new.log') for piece in read_in_chunks(f): process_data(piece)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def read_in_chunks(file_object, chunk_size=1024):
        """把文件切割成一块块的读,默认大小是1024k"""
        while True:
            data = file_object.read(chunk_size)
     
            if not data:
                break
            yield data
     
     
    f = open('new.log')
    for piece in read_in_chunks(f):
        process_data(piece)



      zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
    展开全文
  • Python3读取大文件的方法

    千次阅读 2019-03-27 20:41:47
    Python3读取大文件的方法1. 方法一:利用yield生成器2. 方法二:利用open()自带方法生成迭代对象,这个是一行一行的读取3. 二者的比较 1. 方法一:利用yield生成器 def readPart(filePath, size=1024, encoding="utf...

    1. 方法一:利用yield生成器

    def readPart(filePath, size=1024, encoding="utf-8"):
        with open(filePath,"r",encoding=encoding) as f:
            while True:
                part = f.read(size)  
                if part:
                    yield part
                else:
                    return None
    filePath = r"filePath"
    size = 2048 # 每次读取指定大小的内容到内存
    encoding = 'utf-8'
    for part in readPart(filePath,size,encoding):
        print(part)
        # Processing data
    

    2. 方法二:利用open()自带方法生成迭代对象,这个是一行一行的读取

    with open(filePath) as f:
        for line in f:
            print(line)
            # Processing data
    

    3. 二者的比较

    方法一可以灵活控制一次读取的size,在速度上较2有优势,适用于一些大的二进制文件,比如读取一些大的视频或者图片等。
    方法二在处理一些文本的时候感觉更加便利,按行读更容易对文本进行处理。
    关于两种方法的应用场景,欢迎小伙伴评论留言。
    后记:
    我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
    2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
    如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技,扫描下方二维码或者搜索每日学一技关注。
    这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!
    每日学一技

    展开全文
  • 有个数据实在太了,有1.7G,打开慢,改文件也慢,我们将其分解成若干.../usr/bin/env python3 # -*- coding: utf-8 -*- f = open("123.sql",'r',encoding='utf-8') readlist = [] ...

    有个数据实在太大了,有1.7G,打开慢,改文件也慢,我们将其分解成若干个中等文件

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    f = open("123.sql",'r',encoding='utf-8')
    readlist = []
    i = 0
    i=i+1
    filename = "mytest_{0}.sql".format(i)
    wf=open(filename, 'w', encoding='utf-8')
    linecount=0
    while 1:
        try:
            line = f.readline()
            wf.write(line)
            linecount=linecount+1       
            if(linecount >;= 200000):
                linecount = 0
                print(filename)
                i=i+1
                wf.close()
                filename = "mytest_{0}.sql".format(i)
                wf=open(filename, 'w', encoding='utf-8')                
            if not line:
                break        
        except Exception as e:
            print("read except:" + str(e))
            continue
            #print("read except:" + str(e))
     
    f.close()
     
    print(filename)
    wf.close()        
     
     

    有一个问题,之前的sql文件保存为utf-8格式,实际上在文件中夹杂中部分乱码,读取时会出错,所以需要try屏蔽

    转载于:https://www.cnblogs.com/luhouxiang/p/4940056.html

    展开全文
  • python3读取大文件的行数的正确姿势

    千次阅读 2017-10-29 12:04:33
    试过几个读取大文件的行号的方法,但最终觉得这个方法不错 count = 0 fp = open(filename, "r", encoding='utf-8') while 1: buffer = fp.read(8*1024*1024) if not buffer: break count += buffer.count('\n...
  • Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。1. read() 接口的...
  • Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。1. read() 接口的...
  • 强悍的 Python —— 读取大文件

    万次阅读 多人点赞 2016-06-03 20:31:23
    Python 环境下文件的读取问题,请参见拙文 Python 基础 —— 文件 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。1. read() 接口的问题f...
  • python 读取大文件

    2019-10-01 02:11:45
    python 读取大文件 要读取个大文件,文件大概是3G左右,担心read会出现内存溢出的情况,网上找了个靠谱的用法: with open(...) as f: for line in f: <do something with ...
  • 由于操作系统将底层操作磁盘的接口向上封装为一种通用接口,因此Python中读写文件的基本方法和JAVA、PHP等高级编程语言一样,先请求操作系统打开一个文件描述符,通过操作系统提供的接口从这个文件对象中读取数据,...
  • f = open(r"D:\python study\README.txt") # README文件的路径 while True: text = f.readline() print(text) if not text: break f.close 结果为: 1 2 3 4 5 二、迭代读取 f = open(r"D:\python ...
  • 简介yaml作为配置文件是非常友好的一种格式,前面一篇讲了yaml的一些基础语法和读取方法,本篇继续讲yaml文件写入方法用yaml模块写入字典嵌套字典这种复杂的数据,会出现括号{ },不是真正的yaml文件数据,可以用...
  • Python读取大文件解决方案 背景 用Python读取3GB文件的时候,用普通方式读取报错MemoryError,说明该无文件无法被装载在内存中发生溢出了。 read和readlines都是将整个文件加入到内存中,文件较大时,会引发...
  • 本文实例讲述了Python3读取文件常用方法。分享给大家供大家参考。具体如下: ''''' Created on Dec 17, 2012 读取文件 @author: liury_lab ''' # 最方便的方法是一次性读取文件中的所有内容放到一个字符串中: ...
  • Python3 _ 读取大文件

    2018-01-17 13:59:00
    ===================== 1============================================ ... 方法一: ...将文件切分成小段,每次处理完小段内容后,释放内存 这里会使用yield生成自定义可迭代对象, 即generator, 每一...
  • 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。 1. read() 接口的问题 f = open(filename, 'rb') f.read() 我们来读取 1 个 nginx 的...
  • For each directoryinthe directory tree rooted at top (including top itself, but excluding"." and ".."), yields a 3-tuple dirpath, dirnames, filenames dirpathis a string, the path to the directory....
  • 读取https://github.com/Embedding/Chinese-Word-Vectors中的中文...因为这是一个txt大文件,尝试了DataFrame,np.loadtxt等,都没有成功,其中主要遇到的问题是:如何读取完整的大文件,而不会出现内存不足memery...
  • 当TXT文件,计算机内存不够时,我们可以选择按行读取TXT文件,并将其存储进Python内置轻量级splite数据库,这样可以加快数据的读取速度,当我们需要重复读取数据时,这样的速度加快所带来的时间节省是非常可观的...
  • 读无字段名(表头)的文本文件 ,用参数names3.为文本文件制定索引,用index_col4.跳行读取文本文件,用skiprows5.数据太时需要逐块读取文本数据用chunksize进行分块。(二)将数据写成文本文件格式函数:to_csv...
  • 创建一个3G大小的word文件,创建方法参考:如何快速生成一个指定大小的txt、word文件 import datetime f = open(r'C:\Users\songlihui\PycharmProjects\test002django\apps\1.doc') t = open(r'C:\Users\songlihui...
  • 读取https://github.com/Embedding/Chinese-Word-Vectors中的中文词向量时,选择了一个有3G多的txt文件,之前在做词向量时用的是word2vec,所以直接导入模型然后...如何读取完整的大文件,而不会出现内存不足memer...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 923
精华内容 369
关键字:

python3读取大文件

python 订阅