我有一个字节字符串,我想将其读入 python 中。该字符串是从 numpy float64 到字节的浮点转换。
问题是我的一些数据在转换时最终将换行符 '\n' 字符作为字节。
如何阻止 python 继续运行当遇到“\n”字符时很疯狂
这是我的数据
value: np.float64 = np.float64(0.05476599186658859)
bytes = value.tobytes()
print(bytes)
save_path = "c:/mydata.bin"
save_path.open("wb")
save_path.write(bytes)
save_path.clost()
结果
b'\x00\x00\x00\xc0I\n\xac?'
现在当我尝试打开时,我收到以下问题
data_path = Path("c:/mydata.bin")
with data_path.open("rb") as data_chunk:
data = data_chunk.read(8) # 8 bytes so read first 8
print(data)
结果
b'\x00\x00\x00\xc0I\n\
我最初使用的是readline () 但移至 read() 来尝试修复此问题,但它仍然不断裁剪最后一个字节
你的问题不是 Python 将
\n
当作特殊字符。问题在于,你是在将文件的
内容
打印到你的终端,而终端将
\n
解释为换行符。
你的文件实际上是正确地存储了所有 8 个字节的。你可以通过十六进制查看器来验证这一点,或者简单地在 Python 中打印出
len(data)
:
data_path = Path("c:/mydata.bin")
with data_path.open("rb") as data_chunk:
data = data_chunk.read(8) # 8 bytes so read first 8
print(len(data)) # 输出:8
print(data) # 输出:b'\x00\x00\x00\xc0I\n\xac?'
解释:
-
print(data)
调用 Python 的内置str
函数来显示字节串。str
函数将\n
转换为实际的换行符。 -
要查看字节串的原始字节表示,你可以使用
repr()
函数:
print(repr(data)) # 输出:b'\x00\x00\x00\xc0I\n\xac?'
总之,你的数据被正确地写入和读取。
\n
字符没有问题,它只是在终端中以换行符的形式显示。