首页 > 编程语言 >Python文件读写、StringIO和BytesIO

Python文件读写、StringIO和BytesIO

时间:2023-05-24 16:22:05浏览次数:35  
标签:StringIO Python 写入 读写 bytes str BytesIO

StringIO和BytesIO

很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO就是在内存中读写str。

要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:

>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> f.write(' ')
1
>>> f.write('world!')
6
>>> print(f.getvalue())
hello world!

getvalue()方法用于获得写入后的str。

要读取StringIO,可以用一个str初始化StringIO,然后,像读文件一样读取:

>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> while True:
...     s = f.readline()
...     if s == '':
...         break
...     print(s.strip())
#Python小白学习交流群:711312441
Hello!
Hi!
Goodbye!

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。

BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:

>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6 
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'

注意,写入的不是str,而是经过UTF-8编码的bytes。

和StringIO类似,可以用一个bytes初始化BytesIO,然后,像读文件一样读取:

>>> from io import BytesIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'

StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口。

标签:StringIO,Python,写入,读写,bytes,str,BytesIO
From: https://www.cnblogs.com/python1111/p/17428661.html

相关文章

  • centos7安装Python3.9
      yumremovepython-3*先卸载所有之前装的python-3。yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgccmakeyum-yinstallepel-releaseyum-yinstallpython-pipwgethttps://www.python.org/ftp/python/3.......
  • Python从0到1丨了解图像形态学运算中腐蚀和膨胀
    摘要:这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理。本文分享自华为云社区《[Python从零到壹]四十七.图像增强及运算篇之腐蚀和膨胀详解》,作者:eastmount。一.形态学理论知识数学形态学的应用可以简化图像数据,保持它们基本的形状特征,并出去不相干的结构。......
  • Python输出带颜色字体
    规则“\033[”+标志符+m字符串控制着后面字符串的显示格式例子print("\033[4m这是一段文字") #下划线(4) print("\033[0;31m这是一段文字") #红字(31)print("\033[1;32;43m这是一段文字") #加粗(1);绿字(32);黄底(43)备注标志符用分号隔开,无顺序要求如果想要后面的文字......
  • python嵌入HTTP代理代码示例
    以下是使用Python嵌入HTTP代理的示例代码:```pythonimporturllib.request#设置代理服务器地址和端口号proxy_handler=urllib.request.ProxyHandler({'http':'http://proxy.example.com:8080'})#创建opener对象opener=urllib.request.build_opener(proxy_handler)#使用opene......
  • Python编译pyd后去掉py版本信息
    #将该脚本和pyd放同一目录importos#导入模块filename=os.getcwd()#文件地址list_path=os.listdir(filename)#读取文件夹里面的名字forindexinlist_path:#list_path返回的是一个列表通过for循环遍历提取元素ifindex.endswith('pyd'):name=......
  • Python自动化办公对每个子文件夹的Excel表加个表头(Excel不同名且有xls文件)
    大家好,我是皮皮。一、前言上一篇文章,我们抛出了一个问题,这篇文章来进行解答。如果针对子文件夹下不同的Excel表名,而且Excel表格类型包括了.xls和.xlsx应该如何处理?要求一步到位。二、实现过程其实这里依靠【ChatGPT】给的答案,只需要修改其中一行代码就可以搞定了,如下所示:imp......
  • python mongodb
    下载mango数据库https://www.runoob.com/mongodb/mongodb-window-install.html程序调用安装依赖pipinstallpymongo简单使用importpymongo#ConnecttoMongoDBmyclient=pymongo.MongoClient("mongodb://localhost:27017/")#Createdatabasemydb=myclient["m......
  • python中对象方法的链式调用
    conf=SparkConf().setMaster("Local[*]").setAppName("test_spark_app")#链式调用#下面三条语句功能相当于上面一条语句conf=SparkConf()conf.setMaster("Local[*]")conf.setAppName("test.namel")conf=SparkConf().setMaster(&......
  • < Python全景系列-6 > 掌握Python面向对象编程的关键:深度探索类与对象
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。Python全景系列的第六篇,本文将深入探讨Python......
  • python+playwright 学习-64 非无痕模式启动浏览器launch_persistent_context
    前言最近有一些爬虫用户在使用playwright的时候,提到playwright默认是用无痕模式打开的浏览器,很多网站会有反爬机制,使用无痕模式打开的时候功能无法正常使用。playwright提供了launch_persistent_context启动浏览器的方法,可以非无痕模式启动浏览器。无痕模式启动浏览器......