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
相关产品推荐
相关产品推荐

