StringIO和BytesIO的用法
数据读写有两种方式:
1、直接读写。案例
import openpyxl def write_excel():
f = openpyxl.Workbook() # 创建工作簿
# sheet1 = f.create_sheet()
print("sheet names:", f.sheetnames)
sheet1 = f.active # 当前工作表的名称
print("sheet1:", sheet1)
row_file = 5 # 生成5行
col_three = 3 # 生成3列 for row in range(row_file):
for col in range(col_three):
rw = row + 1
cl = col + 1
if col % 2 == 0:
sheet1.cell(row=rw, column=cl, value='1')
else:
sheet1.cell(row=rw, column=cl, value='2') f.save("OPENPYXL.xlsx") # 保存文件 if __name__ == '__main__':
# 写入Excel
write_excel()
print('openpyxl 写入成功')
2、在内存中读写。[StringIO读写是字符串, BytesIO读写是二进制文件]
import StringIO output = StringIO.StringIO()
output.write('First line.\n')
print >>output, 'Second line.' # Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue() #获取写入的数据 # Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close() #最后关闭
from io import StringIO
ff = StringIO('Hello!\nHi!\nGoodbye!')
f = StringIO() #创建StringIO对象--可以看做在内存中的文件
i=f.write('hello我是中国人\n') #写入字符串,自动移动读写指针
#返回值:返回字符串个数
i=f.write('李明\n')
f.write('中国\n')
str=f.getvalue() #读取字符串(全部)
#不操作指针 ss=f.seek(0) #移动读写指针
"""参数2:
为0时代表从文件开头开始算起
1代表从当前位置开始算起
2代表从文件末尾算起 ??
如果操作成功,则返回新的指针位置,如果操作失败,则函数返回 -1
"""
s=f.tell() #返回当前读写位置
# s = f.readline() #从当前位置开始读取一行,包括\n;自动移动读写指针
#s = f.readline(3) #从当前位置开始读取一行,包括\n;自动移动读写指针
# 参数 读取的最大字符数 #s=f.readlines() #读取所有行,返回一个字符串列表;;自动移动读写指针
#['hello我是中国人\n', '李明\n', '中国\n'] #s = f.readlines(2) #读取指定行,返回一个字符串列表;自动移动读写指针 #f.flush() #刷新
#s=f.read() # 读取全部内容;自动移动读写指针
#s=f.read(5) #从当前位置开始读取的最大字符数
#f.truncate(3) #保留最前面的n个字符数,其它都删除 f.close() #关闭
from io import BytesIO # 方式一
f = BytesIO() #创建BytesIO对象
i=f.write('中文\n'.encode('utf-8')) #写入字符串--字节形式
#返回值:写入的字节数;注意不是字符数 f.write('中国'.encode('utf-8')) x=f.getvalue() #获取字符串(全部)--字节形式
# b'\xe4\xb8\xad\xe6\x96\x87' # 方式二:可以用一个bytes初始化BytesIO,然后,像读文件一样读取
ff = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
y=ff.read() #读取字节 print(y)
优点:StringIO和BytesIO是在内存中操作str和bytes的方法,使得和读写文件具有一致的接口。
StringIO和BytesIO的用法的更多相关文章
- StringIO和BytesIO
1. StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创建一个StringIO,然后 ...
- 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化
IO在计算机中指Input/Output,也就是输入和输出. 1.文件读写,1,读文件[使用Python内置函数,open,传入文件名标示符] >>> f = open('/User ...
- Python StringIO与BytesIO、类文件对象
StringIO与BytesIO StringIO与BytesIO.类文件对象的用途,应用场景,优.缺点. StringIO StringIO 是io 模块中的类,在内存中开辟的一个文本模式的buff ...
- Python中StringIO和BytesIO
介绍一下Python在内存中读写数据,用到的模块是StringIO和BytesIO StringIO >>> from io import StringIO >>> ...
- Python文件读写、StringIO和BytesIO
1 IO的含义 在计算机中,IO是Input/Output的简写,也就是输入和输出. 由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就 ...
- 三十三 StringIO和BytesIO
StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创建一个StringIO,然后,像文 ...
- python学习——StringIO和BytesIO
StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创建一个StringIO,然后,像文 ...
- python IO编程-StringIO和BytesIO
链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319187857 ...
- python模块StringIO和BytesIO
StringIO和BytesIO StringIO 很多时候,数据读写不一定是文件,也可以在内存中读写. StringIO顾名思义就是在内存中读写str. 要把str写入StringIO,我们需要先创 ...
随机推荐
- python+requests接口用例
本实例通过请求接口登录系统,获取了配置项的ID,并最终实现了对配置项的默认值进行修改 使用到的接口请求方法有:get(查询) ,post(新增),put(修改) 遇到的阻碍点见下面具体代码处的详解 编 ...
- HTTP客户端连接,选择HttpClient还是OkHttp?
为什么会写这篇文章,起因于和朋友的聊天 这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别.性能比较进行搜索,没有找到想要的答案,于是就去over ...
- Golang学习(用代码来学习) - 第四篇
/** 一个用来进行go routine的函数 */ func print_something(msg string){ for i:= 0;i < 5;i++{ time.Sleep(1 * ...
- Java并发编程--基础进阶高级(完结)
Java并发编程--基础进阶高级完整笔记. 这都不知道是第几次刷狂神的JUC并发编程了,从第一次的迷茫到现在比较清晰,算是个大进步了,之前JUC笔记不见了,重新做一套笔记. 参考链接:https:// ...
- QGIS如何打开ArcGIS创建的GDB数据库文件
引言 QGIS作为一种开源的地理信息处理软件由于其界面友好.渲染速度快.开源免费等特性而获得业内很多人士的青睐,然而在实际的生产和处理过程中,GIS数据往往存储在ArcGIS的文件地理数据库(Geod ...
- leetcode动态规划题目总结
Hello everyone, I am a Chinese noob programmer. I have practiced questions on leetcode.com for 2 yea ...
- ESCMScript(2)Module语法
严格模式 ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";. 严格模式的限制如下 变量必须声明后再使用 函数的参数不能有同名属性,否则报错 不能 ...
- Integer Inquiry 大数加法
Integer Inquiry 1 import java.util.*; 2 import java.math.*; 3 import java.io.*; 4 import java.text.* ...
- 前端 JavaScript 实现一个简易计算器
前端使用 JavaScript 实现一个简易计算器,没有难度,但是里面有些小知识还是需要注意的,算是一次基础知识回顾吧. 题目 实现一个简易版的计算器,需求如下: 1.除法操作时,如果被除数为0,则结 ...
- CentOS-安装node_exporter导出机器指标
注:node_exporter导出机器指标配合 Grafana+Prometheus使用,可参考:远程监控服务器指标 创建相关目录 $ mkdir /home/prometheus/ -p $ cd ...