我使用python 3,我尝试将二进制文件写入使用r + b的文件。
for bit in binary:
fileout.write(bit)
其中,binary是包含数字的列表。如何将其写入二进制文件?
最终文件必须看起来像b’x07 \ x08 \ x07 \
谢谢
当您以二进制模式打开文件时,实际上就是在使用该bytes
类型。因此,当您写入文件时,您需要传递一个bytes
对象,而从文件中读取时,您将获得一个bytes
对象。相反,以文本模式打开文件时,您正在使用str
对象。
因此,写“ binary”实际上就是写一个字节字符串:
with open(fileName, 'br+') as f:
f.write(b'\x07\x08\x07')
如果您有想要写为二进制的实际整数,则可以使用该bytes
函数将整数序列转换为字节对象:
>>> lst = [7, 8, 7]
>>> bytes(lst)
b'\x07\x08\x07'
结合这些,您可以将整数序列作为字节对象写入以二进制模式打开的文件中。
正如Hyperboreus在评论中指出的那样,bytes
它将只接受实际上适合一个字节的数字序列,即0到255之间的数字。如果要以任意方式存储任意(正)整数,而不必担心知道它们的确切大小(结构需要),那么您可以轻松地编写一个辅助函数,将这些数字分成单独的字节:
def splitNumber (num):
lst = []
while num > 0:
lst.append(num & 0xFF)
num >>= 8
return lst[::-1]
bytes(splitNumber(12345678901234567890))
# b'\xabT\xa9\x8c\xeb\x1f\n\xd2'
因此,如果您有一个数字列表,则可以轻松地对其进行迭代,然后将每个数字写入文件中。如果以后要提取单个数字,则可能需要添加一些内容来跟踪哪个单个字节属于哪个数字。
with open(fileName, 'br+') as f:
for number in numbers:
f.write(bytes(splitNumber(number)))
问题内容: 我有一个字节列表作为整数,这类似于 如何将此列表作为二进制文件写入文件? 这行得通吗? 问题答案: 这正是用于: 如果您使用的是Python 3.x,则可以改用(也许应该这样做,因为它可以更好地表明您的意图)。但是在Python 2.x中,这是行不通的,因为它只是的别名。像往常一样,使用交互式解释器进行显示比使用文本进行解释要容易,所以让我这样做。 Python 3.x: Python
问题内容: 我从事Web编程已经有几年了,自那时以来,我还没有为桌面应用程序做任何编程,而且我已经忘记了很多事情。如果这太简单,请耐心等待。 现在我有这种情况: 我正在尝试将一些散列字存储在文件中。我想我应该为此使用二进制文件(如果我错了,请纠正我)。但是我不知道如何将单词写到文件中。我尝试了很多方法,但是当我读回文件并尝试解密单词时,我得到了。 有谁知道如何将单词写到文件中? PS:我使用以下代
我试图使用python中的“二进制”节俭数据类型来发送二进制数据。当实际的客户端操作开始时(在实际发送之前),客户端会触发一个异常,抱怨UTF编码。Thrift Python库不支持真正的二进制编码吗?这是因为我使用的是JSON协议,而该协议不为二进制定义保护自身。在后台,Thrift 0.9.1生成一个“二进制”字段作为“字符串”(Java和C也是如此)。这就是此时“二进制”的本质吗? 我的Th
有可能吗?
问题内容: 我想在Python中实现一个服务器,该服务器通过HTTP流化MP3格式的音乐。我希望它播放音乐,以便客户端可以连接到流并开始收听当前正在播放的内容,就像广播电台一样。 以前,我已经使用SocketServer.TCPServer在Python中实现了自己的HTTP服务器(是的,我知道BaseHTTPServer存在,只是想自己编写一个微型HTTP堆栈),那么音乐流媒体在架构上会有什么不
这是一个考题,我想一定有更有效的方法。(我也知道有一种方法可以直接转换二进制数,而不需要经过二进制字符串,但我不知道如何转换)。 这就是问题所在: 给出了一个由Q字符组成的非空零索引字符串S。该字符串的周期是最小的正整数P,使得: P≤ Q/2和S[K]=S[kp]表示0≤ K 例如,8是“Codilityco”的时期。如果M是N的二进制表示的周期,则正整数M是正整数N的二进制周期。 例如,4是9