• 预备
  • 基础语法
  • 容器类型
  • 函数
  • 面向对象
  • 输入输出
  • 进程控制
  • 线程控制
  • 正则表达式
  • 网络编程
  • 图形界面
  • 常见问题
  • API 帮助手册

  • 设置

1495

7 分钟

#内存 I/O

文件 I/O 是对硬盘(外存)的操作,很多情况下,需要在内存中存储并操作数据(例如网页上动态生成图片、压缩包),在 Python 中可以使用 StringIOBytesIO 实现这一点。

变量本身就是对内存的操作,此处的 StringIOBytesIO 提供类似文件 I/O 的,便于使用的流式操作接口。

#StringIO

StringIO 顾名思义,是对字符串的 I/O 操作,和文件 I/O 一样,支持 readwritetellseek 等方法;并可以通过 getvalue 方法获取完整的字符串。

import io from io import StringIO stream = StringIO("甲乙丙丁戊己庚辛壬癸") # 创建 StringIO 对象 print("初始偏移为", stream.tell()) # 查看初始偏移 print(stream.read(3)) # 读取 3 个字符 stream.seek(6, io.SEEK_SET) # 将偏移量设为,文件开头 + 6 字符 print(stream.read(3)) # 读取 3 个字符 stream.seek(0, io.SEEK_SET) # 将偏移量设为,文件开头 stream.write("ABC") # 在中间写入,会进行覆盖 print(stream.getvalue()) # 获取整个字符串
Loading...

#BytesIO

BytesIO 顾名思义,是对字节数据的 I/O 操作,和文件 I/O 一样,支持 readwritetellseek 等方法;并可以通过 getvalue 方法获取完整的 bytes

import io from io import BytesIO stream = BytesIO(b"ABCDEFGHIJKLMNOPQRSTUVWXYZ") # 创建 BytesIO 对象 print("初始偏移为", stream.tell()) # 查看初始偏移 print(stream.read(3)) # 读取 3 个字节 stream.seek(6, io.SEEK_SET) # 将偏移量设为,文件开头 + 6 字节 print(stream.read(3)) # 读取 3 个字节 stream.seek(0, io.SEEK_SET) # 将偏移量设为,文件开头 stream.write(b"XXX") # 在中间写入,会进行覆盖 print(stream.getvalue()) # 获取整个字符串
Loading...

创建于 5/8/2025, 10:39:31 AM

更新于 5/8/2025, 10:39:31 AM