io.StringIO() 和 io.BytesIO() 类来创建类文件对象操作字符串数据

python io.StringIO类介绍 io.StringIO 是 Python io 模块中的一个类,用于在内存中创建类似文件的对象,专门用于处理 字符串数据。它的行为类似于文件对象,可以进行 读 (read)、写 (write)、查找 (seek) 等操作,而不需要实际创建物理文件。 阅读详情

io.StringIO 类 只能用于文本, io.BytesIO 类 操作二进制数据

当你想模拟一个普通的文件的时候 StringIO 和 BytesIO 类是很有用的。比如,在单元测试中,你可以使用 StringIO 来创建一个包含测试数据的类文件对象,这个对象可以被传给某个参数为普通文件对象的函数。
需要注意的是, StringIO 和 BytesIO 实例并没有正确的整数类型的文件描述符。因此,它们不能在那些需要使用真实的系统级文件如文件,管道或者是套接字的程序中使用。

下面是例子说明:

# -*- coding: utf-8 -*-
import io
import PyPDF2
import json
import zipfile
import requests


s1 = io.StringIO()
s1.write('Hello World\n')

print('This is a test', file=s1)

# Get all of the data written so far
print(s1.getvalue())


# Wrap a file interface around an existing string
s2 = io.StringIO('Hello\nWorld\n')
print(s2.read(4))

print(s2.read())


s3 = io.BytesIO()
s3.write(b'binary data')
s3.getvalue()


# 简单使用,内存中操作zip合并, pdf合并等
def compress_file_create_zip(**kwargs):
    """
    压缩文件为zip(内存中操作)
    """
    try:
        file = io.BytesIO()
        with zipfile.ZipFile(file, 'w') as myzip:
            for name, value in kwargs.items():
                myzip.writestr(name, value)
        zip_data = file.getvalue()
        return zip_data
    except Exception as e:
        raise Exception('压缩文件为zip,发生异常')


def memory_merge_many_pdf(file_byte):
    """
    在内存中操作pdf合并为一个pdf,返回合成的二进制流
    """
    try:
        merge_pdf = PyPDF2.PdfFileMerger()
        for one_byte in file_byte:
            merge_pdf.append(PyPDF2.PdfFileReader(one_byte))
        file = io.BytesIO()
        merge_pdf.write(file)
        return file.getvalue()
    except Exception as e:
        raise Exception('在内存中操作pdf合并为一个pdf,发生异常')
    
    
def pdf_data_save_disk(route, pdf_data):
    """
    将合并的pdf保存到磁盘 测试使用,非必要无需将pdf写到本地
    """
    try:
        with open(route+'.pdf', 'wb') as pdffile:
            pdffile.write(pdf_data)
    except Exception as e:
        raise Exception('将压缩的文件保存到磁盘发生异常')




Python笔记-IO同步和异步、 读写文件、StringIO和BytesIO IO同步和异步、 读写文件、StringIO和BytesIO 阅读详情

相关推荐

python学习笔记(二十一) -- IO流之文本读写、StringIO和BytesIO

    目录 文本读写 open函数 read() 和 write() read(size)、readline()、readlines() seek() 和 tell() 二进制文件 字符编码 with与open结合使用 StringIO API 简单使用 BytesIO  文本读写 open函数 通过 open 函数我们可以对一个文件 进行读写操作,简单的使用o...

苝花向暖丨楠枝向寒 2792

【python】io.BytesIO简要介绍及示例

在 Python 中,以b开头的字符串表示的是二进制字符串(bytes)。这种字符串是由字节组成的,每个字节都有一个对应的整数值,范围在 0 到 255 之间。二进制字符串与普通字符串不同,因为普通字符串是由 Unicode 字符组成的,每个字符都对应一个 Unicode 码点。在上面的示例中,我们在data变量中存储了一个二进制字符串,它以b开头。因此,当我们从 BytesIO 对象中读取数据并将其存储在read_data变量中时,它也是一个二进制字符串,同样以b开头。

qq_41604569的博客 2万+

Python 的 io.BytesIO():内存中的二进制数据处理

在 Python 编程中,处理二进制数据是一项常见任务。然而,有时您可能不想将数据写入实际文件,而是想在内存中进行操作。这就是 io.BytesIO() 登场的地方。本文将介绍 io.BytesIO() 类的基本用法,以及如何在内存中创建临时的二进制数据缓冲区,以便更高效地处理数据。无需担心创建临时文件,让我们深入了解这个强大的 Python 工具。

专注于深入研究多种编程语言,以实战为导向,逐步拓展开发技能,提升工程化编码和思维能力,展现无敌技术实力。 2052

python中IO库中StringIO方法和BytesIO方法用法详解

python中IO库中StringIO方法和BytesIO方法用法详解

IT之一小佬的博客 2460

【Python基础】Python中 io.BytesIO()的用法

是 Python 中io模块提供的一个内存缓冲区,用于。它的用法类似于文件对象,但不涉及实际的文件操作,而是在内存中处理数据。这个对象非常适合用于需要处理二进制数据的场景,比如图片音频文件网络数据的处理等。

若北辰 1142

基于FreeRTOS与MQTT的物联网技术应用系列——步进电机控制(三)SD卡驱动、FatFS等的移植和ini配置文件读取的实现

本文实现了基于STM32F107VC的金牛开发板的基于SPI模式的SD卡驱动和FatFS的移植,以及利用minini库对ini配置信息文件进行读取。

sqshining的专栏 2137

python3中StringIO和BytesIO使用方法和使用场景详解

说起IO,很多人首先想到的是磁盘中的文件,将磁盘中的文件读到内存以及内存内容写入文件。但是还有一种内存和内存之间的IO,叫类文件对象,这一篇我们就一起来学习下python中的两个类文件对象:StringIO和BytesIO。 我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。 文章目录内存中的IO操作环境标志位Strin...

T型人小付的博客 3万+

一文讲透3GPP TS 36.104发射链路相关指标

3GPP是制定移动通信标准的国际组织,其36.104规范对LTE基站射频性能提出详细要求。规范主要涵盖七方面:1)基站输出功率分类标准;2)LTE信道带宽计算方法;3)TD-LTE特有的发射机关断功率及时延要求;4)信号质量指标(频率误差和EVM)及其影响因素;5)邻道泄漏比(ACLR)的45dBc标准;6)带内频谱辐射模板(OBUE)的噪声限制;7)9kHz-12.75GHz频段的带外杂散辐射要求。这些技术要求保障了LTE基站的射频性能和网络质量。

weixin_49761275的博客 4526

Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化

IO编程    IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。从磁盘读取文件到内存,就只有Input操作,反过来,把数据写到磁盘文件里,就只是一个Output操作。    由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问...

u012084802的博客 2万+

Java开发者的福音:Aspose 25.10全系列(Cells/Words/PDF/Slides)最新版破解与集成保姆级教程

本文为Java开发者提供了Aspose 25.10全系列组件(Cells/Words/PDF/Slides)的最新版破解与集成保姆级教程。通过详细的Maven依赖配置、字节码修改技术绕过限制,以及Spring Boot项目中的实战集成指南,帮助开发者高效实现Office文档处理功能,提升开发效率。

weixin_30919429的博客 344

Android13多路录音实战:如何用AudioRecord实现6通道音频采集(附完整代码)

本文详细解析了在Android13中使用AudioRecord API实现6通道音频采集的全流程,包括硬件兼容性检测、多通道配置、数据处理与性能优化。通过实战代码示例,帮助开发者掌握多路录音技术,适用于空间音频、环绕声录制等专业场景。

weixin_26965807的博客 477

Python3调试类_io.BytesIO、_io.StringIO用法(Python3 IO编程之StringIO和BytesIO)

举例如下。

墨痕诉清风的博客 1万+

Opencv2.4.9源码分析——HoughCircles

图形可以用一些参数进行表示,标准霍夫变换的原理就是把图像空间转换成参数空间(即霍夫空间),例如霍夫变换的直线检测就是在距离-角度空间内进行检测。圆可以表示成: (x-a)2+(y-b)2=r2                   (1) 其中a和b表示圆心坐标,r表示圆半径,因此霍夫变换的圆检测就是在这三个参数组成的三维空间内进行检测。 原则上,霍夫变换可以检测任何形状。但复杂的形状需要的

赵春江的专栏 3万+

Python学习(十)IO编程(文件读写、StringIO和BytesIO、操作文件和目录、序列化)

Python学习(十)IO编程(文件读写、StringIO和BytesIO、操作文件和目录、序列化)

ACGkaka的博客 1843

怎么定位K8s容器中运行的JAVA程序OOM异常(一)

一.前置环境 1. 运行在k8s集群上的Pod服务(Java程序) 2. MAT分析工具 二.利用Jmap工具导出Heap Dump 1.执行命令进入pod容器 kubectl exec -itn {namespace} {pod}} sh 2.利用jmap生成java程序的Dump文件 jps | grep {jar} ./jmap -dump:live,format=b,file=haep.hprof 8 3.利用k8s命令导出Dump文件到本地 kubectl cp -n

计算科学 3013

SARscape的DInSAR全流程-以西安市隋大兴唐长安城遗址为例

通过DInSAR对西安市隋大兴唐长安城遗址开展的年度周期性监测,发现成因是地质内部构造断裂带活动所导致的地面产生物理空间上的形变,而地面的沉降与抬升是直接影响城市发展与文化遗产保护最为常见的缓变型不可逆地质灾害。西安市地处汾渭断陷盆地中部,受临潼-长安断裂带影响,导致区域内构造活动较为强烈。由于早年西安市地表水资源匮乏,从上世纪50年代末开始大量开采地下水资源以满足城市人口不断扩张的需求,从而导致地下承压含水层水位急速下降,形成多个局部沉降中心(八里村、西工大、电子城等)。

2301_77687129的博客 5810

Python io – BytesIO,StringIO

Python io module allows us to manage the file-related input and output operations. The advantage of using the IO module is that the classes and functions available allows us to extend the functionalit...

从零开始的教程世界 1369

微信小程序云开发 - 实现商家转账到零钱(微信企业付款到零钱) V3功能流程及完整实例代码,过微信云开发的云函数实现企业付款到零钱(提供详细示例源码纯云函数实现,证书、密钥、签名等各种常见问题解决方案

企业付款到零钱(微信小程序提现功能,提现到零钱)微信小程序-云函数实现微信企业付款到零钱功能,实现微信商户号中的企业付款到零钱的功能,微信小程序+云开发+商家转账至零钱+微信小程序用户提现,使用云开发环境的云函数实现微信小程序的支付功能,微信小程序实现微信企业付款到零钱功能的流程,V3 V2基于微信云开发的商家转账至零钱,小程序云函数企业付款到零钱功能实现,云开发实现微信商户支付企业付款到零钱功能,不用服务器纯云函数实现,详细示例代码demo教程,API证书错误,转账不到账怎么办,密钥生成有误,转账失败,有

🏆 前端领域优质创作者 1万+

【Python】解析 io.StringIO 与 io.BytesIO

io.StringIO 和 io.BytesIO 是 Python 中用于内存中模拟文件操作的两个类,分别用于处理文本数据和二进制数据。它们的主要优势是避免实际文件 I/O 操作,从而提高效率并简化代码。

Data · Model · Agent · Repeat 1126

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python中StringIO和BytesIO

最常见的io操作是将磁盘中的文件读到内存以及内存内容写入文I件。还有一种内存和内存之间的IO,叫,python中的StringIO和BytesIO就是类文件对象,通俗解释即:像操作文件一样在内存中操作字符串和二进制内容磁盘上的文件,就是将数据持久化到磁盘的一块区域,供后面重复使用。其优点就是持久化稳定不丢失,但是缺点也很明显,就是每次要使用都要从磁盘读入,相对内存而言很缓慢。如果只是短时间的重复利用,并不希望长期持久化,而且对速度的要求比较高,这时候就可以考虑缓存。

orangerfun的博客 1444

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python io模块下类StringIO和 BytesIO 字符串的I/O操作

字符串的I/O操作 问题 你想使用操作类文件对象的程序来操作文本或二进制字符串。 解决方案 使用io.StringIO()和io.BytesIO()类来创建类文件对象操作字符串数据。比如: >>> import io >>> s = io.StringIO() >>> s.write('Hello World\n') 12...

Through Da Storm 361

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

2024年Python中StringIO和BytesIO

stringIO 比如说,这时候,你需要对获取到的数据进行操作,但是你并不想把数据写到本地硬盘上,这时候你就可以用stringIO‘’’遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!‘’’将函数返回的数据在内存中读可以用StringIO本身的方法stringfromfunction也可以用file-like object的方法‘’’遇到问题没人解答?

2401_84563220的博客 825

[StringIO和BytesIO]

StringIO和BytesIO

gaogsf的博客 276

Python3 IO编程之StringIO和BytesIO

  StringIO    很多时候,数据读写不一定是文件,也可以在内存中读写。   要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即可 >>> from io import StringIO >>> f=StringIO() >>> f.write('hello') 5 &g...

abtmh02622的专栏 977

Python StringIO和BytesIO与Open()的比较

StringIO and BytesIO are methods that manipulate string and bytes data in memory. StringIO和BytesIO是操作内存中字符串和字节数据的方法。 StringIO is used for string data and BytesIO is used for binary data. StringIO用于字符串...

weixin_26737625的博客 1250
上一篇: mac 下配置python 虚拟环境
下一篇: python io简单总结
MZP_man
博客等级 码龄8年 188粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值