You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中是否存在与C++ readRawData等效的顺序读取文件字节流的方法

在Python中实现顺序读取字节流(类似C++的readRawData)

当然有啦!Python里处理这种顺序读取字节流、无需手动回退指针的场景非常方便,逻辑和你在C++里用readRawData的思路完全一致——每次读取后,流的指针会自动移动到下一个未读取的位置,不需要额外做回退操作。

下面分两种常见场景给你举例:

1. 读取本地二进制文件

用Python内置的open函数以二进制模式(rb)打开文件后,直接调用read(n)方法就能读取指定字节数的内容,和readRawData的用法几乎对应:

# 用with语句自动管理文件,避免忘记关闭
with open("your_file.bin", "rb") as stream:
    # 读取64字节的层名称
    layer_name = stream.read(64)
    # 紧接着读取4字节的名称(指针已经自动移到64字节之后)
    m_name = stream.read(4)
    # 继续后续的读取操作...

2. 处理内存中的字节流(比如网络数据、内存缓存)

如果你的字节流是在内存中(比如从网络接口获取的二进制数据),可以用io.BytesIO来模拟文件流的操作,用法和文件读取完全一致:

import io

# 假设raw_data是你已经获取到的二进制数据(bytes类型)
raw_data = b"example_binary_content_that_needs_to_be_parsed..."
stream = io.BytesIO(raw_data)

# 同样顺序读取
layer_name = stream.read(64)
m_name = stream.read(4)
# 后续读取操作...

额外小提示

Python中read(n)返回的是bytes类型,如果需要转成字符串,记得用对应的编码解码(比如UTF-8),如果C++里的字符串是用空字符填充固定长度的,可能需要去掉末尾的空字节:

# 去掉64字节字符串末尾的空字符,转成UTF-8字符串
layer_name_str = layer_name.decode("utf-8").strip("\x00")

内容的提问来源于stack exchange,提问作者user2962768

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:42:48