Python实现高效地读写大型文件

2025-01-22 16:50

本文主要是介绍Python实现高效地读写大型文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下...

上一篇给大家介绍如何使用 python 进行文件读写操作的方法,问题来了,如何读写的是大型文件,有没有什么方法来提高效率呢,不要捉急,这一篇来聊聊如何在Python中高效地读写大型文件。

以下是在 Python 中高效读写大型文件的一些方法:

一、逐行读取大型文件

def read_large_file_line_by_line(file_path):
    with open(file_path, 'r') as file:
        for line in file:
            # 处理每一行的数据,这里仅打印
            print(line.strip())
  • with open(file_path, 'r') as file:使用 with 语句打开文件,确保文件在使用完毕后自动关闭。
  • for line in file:文件对象是可迭代的,逐行读取文件内容,避免一次性将整个文件读入内存,节省内存空间,适用于大型文本文件。

二、分块读取大型文件

def read_large_file_in_chunks(file_path, chunk_size=1024):
    with open(file_path, 'r') as file:
        while True:
            data = file.read(chunk_size)
            if not data:
                break
            # 处理读取到的数据块,这里仅打印
            print(data)
  • file.read(chunk_size):每次读取指定大小(chunk编程_size)的数据块,循环读取直到文件结束。
  • chunk_size 可以根据实际情况调整,一般根据文件大小和可用内存来选择合适的值。

三、使用 mmap 模块进行内存映射文件操作(适用于大文件)

import mmap

def read_large_file_with_mmap(file_path):
    with openandroid(file_path, 'r') as file:
        wihttp://www.chinasem.cnth mmap.mmap(file.fileno(), 0, Access=mmap.ACCESS_READ) as javascriptmmap_obj:
            # 处理映射的数据,这里仅打印
            print(mmap_obj.readline())
  • mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ):将文件映射到内存中,实现文件的高效读写,fileno() 方法获取文件描述符。
  • 可以像操作字符串一样操作 mmap_obj,避免了频繁的文件 I/O 操作,提高性能。

四、使用 pandas 分块处理大型 CSV 文件(适用于 CSV 文件)

import pandas as pd

def read_large_csv_in_chunks(csv_file_path):
    chunk_size = 100000  # 每块的行数
    for chunk in pd.read_csv(csv_file_path, chunksize=chunk_size):
        # 处理数据块,这里仅打印
        print(chunk)
  • pd.read_csv(csv_file_path, chunksize=chunk_size):将 CSV 文件按块读取,chunksize 为每块的行数。
  • 可以对每个 chunk 进行数据处理,如数据清洗、分析等操作,避免一次性加载整个文件。

五、使用 numpy 分块处理大型二进制文件(适用于二进制文件)

import numpy as np

def read_large_binary_in_chunks(binary_file_path, chunk_size=1024):
    with open(binary_file_path, 'rb') as file:
        while True:
            data = np.fromfile(file, dtype=np.float32, count=chunk_size)
            if data.size == 0:
                break
            # 处理数据块,这里仅打印
            print(data)
  • np.fromfile(file, dtype=np.float32, count=chunk_size):从文件中读取二进制数据,dtype 为数据类型,count 为元素数量。
  • 可以根据文件的存储数据类型调整 dtype,按块读取二进制文件。

六、使用 itertools 模块进行迭代处理(适用于文本文件)

import itertools

def read_large_file_with_itertools(file_path, chunk_size=1024):
    with open(file_path, 'r') as file:
        for chunk in itertools.zip_longest(*[iter(file)]*chunk_size):
            chunk = [line.strip() for line in chunk if line]
            # 处理数据块,这里仅打印
            print(chunk)

itertools.zip_longest(*[iter(file)]*chunk_size):将文件迭代器分组,每组 chunk_size 行,方便分块处理。

七、使用 linecache 模块逐行读取大型文件(适用于文本文件)

import linecache

def read_large_file_with_linecache(file_path, line_number):
    line = linecache.getline(file_path, line_number)
    # 处理指定行的数据,这里仅打印
    print(line.strip())

linecache.getline(file_path, line_number):从文件中获取指定行的数据,适用于只需要读取文件中某些行的情况,避免读取整个文件。

总结

在处理大型文件时,根据文件类型和操作需求,可灵活使用上述方法,避免一次性将整个文件加载到内存中,从而提高程序的性能和稳定性。同时,可以结合不同的模块和函数,实现复杂的数据处理和分析任务。好了,赶快收藏起来吧,实际工作中你一定会用得到。

到此这篇关于Python实现高效地读写大型文件的文章就介绍到这了,更多相关Python读写大型文件内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Python实现高效地读写大型文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153187

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2