前言:

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. 如何发布自己的NPM包(模块)?
  2. 静态库调用中“unrecognized selector sent to instance”错误
  3. HBase单机模式部署
  4. MATLAB中K-means函数表达方式
  5. 如何解决在onCreate()中获取View的width和Height为0?
  6. [导入]Dreamweaver插入Flash参数
  7. android 多个占位符,Android中占位符的使用
  8. git回退历史版本无法上传_Git系列教程(二):版本库中添加文件、版本回退
  9. 初识【jQuery】,入门必看!
  10. 脉冲神经网络基础知识,SpikeProp
  11. mysql kingshard_浅谈 Kingshard MySQL 中间件
  12. 第三次大作业-作业准备
  13. Interactive cloth
  14. python爬虫什么意思-Python爬虫是什么意思有啥用 python爬虫原理实例介绍
  15. 【国产化电脑】如何有效避免违规外联
  16. win10计算机管理器在哪,Windows10如何打开资源管理器?Windows10任务管理器在哪?...
  17. 理解path.join() 和 path.resolve()
  18. 拼多多怎么做?无货源新手怎么轻松上手?(小珏)
  19. 可否推荐一个香港主机?
  20. 《Windows 8 权威指南》——2.2 Windows 8 Metro界面

热门文章

  1. 别以为if slse很简单——决策树
  2. 操作系统之动态库和静态库
  3. 爬虫教程( 5 ) --- Selenium 与 PhantomJS
  4. Dom4j完整教程~Document对象相关
  5. Spring Data JPA 从入门到精通~如何配置多数据源
  6. PostgreSQL 的一个简单连接和查询操作——示例
  7. 数据可视化--pyecharts绘图
  8. nlp cs224n 学习笔记1 Introduction and Word Vectors
  9. 统计iOS项目代码行数
  10. spriteatlas 白屏的问题_Discuz白屏问题解决思