Python3 - 字符串的I/O操作

2018-12-22  本文已影响15人  惑也

问题

使用操作类文件对象的程序来操作文本或二进制字符串。

解决方案

使用 io.StringIO()io.BytesIO() 类来创建类文件对象操作字符串数据。比如:

import io

s = io.StringIO()
print(s)
<_io.StringIO object at 0x108b18dc8>

s.write('Hello World!\n')
print(s.getvalue())
Hello World!

print('This is a test.', file = s)
print(s.getvalue())
Hello World!
This is a test.

io.StringIO只能用于文本。如果要操作二进制数据,要使用 io.BytesIO类来代替。比如:

ss = io.BytesIO()
print(ss)
<_io.BytesIO object at 0x10d0a1b48>

ss.write(b'binary data')
print(ss.getvalue())
b'binary data'

讨论

当需要模拟一个普通文件时,StringIOBytesIO 类是很有用的。 比如,在单元测试中,可以使用 StringIO 来创建一个包含测试数据的类文件对象, 这个对象可以被传给某个参数为普通文件对象的函数。

需要注意的是,StringIOBytesIO 实例并没有正确的整数类型的文件描述符。 因此,它们不能在那些需要使用真实的系统级文件,如文件,管道或者是套接字的程序中使用。

上一篇 下一篇

猜你喜欢

热点阅读