前言:

python2中的StringIO经常被用来作字符串的缓存,尤其是处理图片验证码的处理,近期牵扯tornado项目升级python3,简单学习了下python3中的io操作;因为StringIO的一些接口和文件操作是一致的,也就是说同样的代码,可以同时当成文件操作或者StringIO操作。StringIO的行为与file对象非常像,但它不是磁盘上文件,而是一个内存里的“文件”,我们可以将操作磁盘文件那样来操作StringIO。python2中是叫cStringIO,python3是归到IO中了:

本文只简单介绍python3下io中的StringIO和BytesIO()的操作:

StringIO

import io

#1、生成一个StringIO对象:

s = io.StringIO()

#2、write()从读写位置将参数s写入到对象s,参数为str或unicode类型,读写位置被移动

s.write('Hello World\n')

#3、getvalue()用法:返回对象s中的所有数据

print(s.getvalue())

#4、read(n)用法:参数n用于限定读取的长度,类型为int,默认为从当前位置读取对象s中所有的数据。读取结束后,位置被移动。

s = io.StringIO('Hello World\n')

print(s.read(2))

#结果 He

print(s.read())

#结果 llo world\n

s = io.StringIO('Hello World\n')

#5、readline(length)用法:length用于限定读取的结束位置,类型为int,缺省为None,即从当前位置读取至下一个以'\n'为结束符的当前行。读位置被移动。

print(s.readline(7))

#结果 Hello W

BytesIO

import io

#一样的使用方法:先实例化一个对象

s = io.BytesIO()

#可以把相关数据转换成bytes类型

s.write(b"hello world") #同一个对象使用write可以追加写

#getvalue获取写入的二进制数据

s.getvalue()

#输出:b'hello world'

#read方法同样适用:

s.read()可以读取全部内容,传递数字参数好像没什么用;

然后可以用作图片的处理:

from PIL import Image

import requests

res = requests.get('https://cn.bing.com/th?id=OHR.CorkTrees_ZH-CN1253123792_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp', stream=True)

# 初始化BytesIO对象并且写入数据

s = io.BytesIO(res.content)

r = Image.open(s) # Image打开Byte字节流数据

print(s.format) # 获取图片的格式

print(s.size) #获取图片的大小

r2 = io.BytesIO() # 创建一个空的Bytes对象

r2 = s.getvalue() # 这个就是保存的图片字节流

python import io_Python——python3的io读写相关推荐

  1. python 异步io_python之同步IO和异步IO

    linux操作系统基础知识 用户空间和内核空间 操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用户进程不能直接操作内核保证内核的安全,操 ...

  2. python磁盘io_python监控磁盘io

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. python怎么读取中文文件-Python3 中文文件读写方法

    字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(en ...

  4. python 异步io_Python中的异步IO:完整的演练

    python 异步io Async IO is a concurrent programming design that has received dedicated support in Pytho ...

  5. python中io.textio_关于python的IO读写的二三事

    IO读写内情 关于io读写,可以分为缓存io与直接io两种.而前者缓存io是当前最为常用的一种io机制:即使用缓冲区buffer(内存中的一块地址),来防止对硬件的频繁访问,由此减少读写操作的时间消耗 ...

  6. Unable to import required dependencies: numpy: The Python version is: Python3.8 from “D:\ancon\pytho

    Unable to import required dependencies: numpy: The Python version is: Python3.8 from "D:\ancon\ ...

  7. 轻松玩转AI(从Python开始之Python3入门)

    轻松玩转AI路径: 从Python开始 [链接] 数据科学 [链接] 机器学习 [链接] 深度学习--神经网络 [链接] 从Python开始: Python3入门 [链接] Python3进阶 [链接 ...

  8. Python基础知识点拾遗---文件IO(os、filecmp、shutil库)、sys库、序列化(pickle)、类

    Python基础知识点拾遗 文件IO 文本 目录 os 获取文件的创建.修改及最近访问时间 获取当前文件的大小 获取当前的登录用户名称 获取当前的cpu核数 调用操作系统底层的random生成器 sh ...

  9. python 同花顺thstrader_GitHub - yanjlee/THSTrader: 量化交易。同花顺免费模拟炒股软件客户端的python API。(Python3)...

    THSTrader 量化交易.同花顺免费模拟炒股软件客户端的python API.(Python3) 为什么有这个项目 本来看到了这个easytrader这个项目,不过这个客户端已经过时了(被强制更新 ...

最新文章

  1. 图像超分辨率算法:CVPR2020
  2. Delphi7 (第一天:类的编写)续
  3. Python实现文本自动分类(朴素贝叶斯方法)
  4. WIN32 窗口枚举和操作
  5. Android StageFrightMediaScanner源码解析
  6. linux rmp命令安装包在哪里_【MongoDB系列】Linux系统安装MongoDB
  7. 「3.4w字」超保姆级教程带你实现Promise的核心功能
  8. 第一篇:稳定性之如何理解高可用?
  9. springmvc往html设置变量,SpringMVC:@MatrixVariable矩阵变量
  10. 查看DLL中导出的函数及参数
  11. 低秩恢复算法(图像去噪)
  12. java实现MongoDB中unwind与match用法
  13. 总结—每个程序员都应该了解的固态硬盘知识
  14. 程序员如何实现35岁完美退休
  15. 30岁的女程序员该何去何从
  16. Robocode Tank AI 实例
  17. mansory自适应label高度
  18. 【虚幻引擎UE】UE5 AR初体验之静态动态模型加载
  19. linux删除历史文件
  20. 中小型企业救星,传统商家的噩梦!SAAS企业应用集成平台

热门文章

  1. 积分图像(Integral image)
  2. 图像处理与图像识别笔记(三)图像增强1
  3. 清空输入缓冲区fflush()
  4. Python3 函数注释: 参数 中 的 冒号 与 箭头
  5. 被讨厌的勇气--总结
  6. try-catch-finally-return执行路径总结
  7. java 实现中文排序,Java自定义比较器实现中文排序
  8. 评论后的Ajax和刷新分页,Wordpress Ajax 评论分页/翻页 – Fatesinger
  9. mysql嵌套选择代码_关于mysql:嵌套联合选择语句
  10. C#编写不安全代码初探