之前我们所说的都是读写真正的文件。其实我们也可以在内存中虚拟一个文件进行读写。python给咱们提供的官方module有io.stringio和io.bytesio.
io.stringio
string io用于在内存在读写字符串。stringio可以传入一个字符初始化。例如
string = stringio(“this is demo”)
例如:
from io import stringio
s = stringio()
s.write(“yes\nyes”)
s.seek(0)
# 将指针拨回到开始位置,否则将会读取不到任何东西
content = s.read()
print content
stringio创建的是一个file-like object,拥有file object的所有方法。stringio还有两个特殊的方法,就是getvalue()方法和close()方法。
getvalue()方法用于获取stringio中写入的内容
close()方法关闭stringio,释放内存。
io.bytesio
stringio只能处理字符串类型的数据,bytesio可以用于处理二进制类型的数据。bytesio的用法与stringio类似
stringio.stringio
在搜索文档的时候,发现在stringio下也有一个stringio,而且两者非常类似。所有google了一下。在stackoverflow有一个回答:
an in-memory stream for unicode text. it inherits textiowrapper.
this module implements a file-like class, stringio, that reads and writes a string buffer (also known as memory files).io.stringio is a class. it handles unicode. it reflects the preferred python 3 library structure.
stringio.stringio is a class. it handles strings. it reflects the legacy python 2 library structure.
what should be preferred?always move forward toward the new library organization. the io.open should be used to replace the built-in unicode-unaware open.
forward. move forward.
大意就是stringio是python2的遗产,后续会被io.stringio取代.建议使用io.stringio.
更多python学习笔记 – stringio以及bytesio相关文章请关注php中文网!