如何在Python中读取或写入二进制数据?

如何在Python中读取或写入二进制数据?

要读取或写入二进制文件,首先需要了解Python中二进制文件的不同文件模式−

模式 描述
rb 以只读二进制格式打开文件。文件指针置于文件开头。这是默认模式。
rb+ 以读写二进制格式打开文件。文件指针位于文件开头。
wb 以只写二进制格式打开文件。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件进行写入。
wb+ 以读写二进制格式打开文件。如果文件存在,则覆盖现有文件。如果文件不存在,则创建新文件以供读取和写入。
ab 以二进制格式追加模式打开文件。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于添加模式。如果文件不存在,则创建一个新文件进行写入。
ab+ 以读写二进制格式追加模式打开文件。如果文件存在,则文件指针位于文件末尾。文件以添加模式打开。如果文件不存在,则创建新文件以供读取和写入。

读取二进制文件

假设我们有一个二进制文件。我们可以使用read()方法来读取它。首先,我们将使用open()方法的rb模式打开Binary File。我们在D:驱动器中有以下源文件−

如何在Python中读取或写入二进制数据?

例子

让我们来看一下完整的代码

# 打开二进制文件
f = open('D:\PythonLogo.png', 'rb')

# 读取行
data = f.read()

# 显示数据
print(data)
Bash

输出

二进制文件不可读并且内容不可识别。 实际输出更大。 我们只显示了某个部分。

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x04\xb0\x00\x00\x04\xb0\x08\x06\x00\x00\x00
\xeb!\xb3\xcf\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00
cHRM\x00\x00z&\x00\x00\x80\x84\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\x0
0\x00:\x98\x00\x00\x17p\x9c\xbaQ<\x00\x00\x00\x06bKGD\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x
93\x00\x00\x00\x07tIME\x07\xe1\x08\n\x07\x16\x07\xc9\xb2\xff\xd3\x00\x00\x80\x00IDATx\xda\
xec\x9dw\xbc]e\x95\xf7\x7f\xcf>\xe7\xa6\x91@\xe8\xc5\x02\xa2\x88\x14q0B\x12\xc0\x99\x00!\x
88(\x02\x9a\x8c\x85"\xea\x80b\xc5\x02\xa1\xf8z\xa78\x8aJ\x13EeF\x1d\xdb\x94\x80@\x08\xea\x
a0\x8c\xe0\x0c\x98\x10`\x94\x92\xd0D@,#\x88\xd4\x90r\xef\xd9\xeb\xfd#\x01\x02i\xe7\x9e\xb3
\xcb\xf3\xac\xfd\xfd~>\xef;
.
.
.
\xcdn\xd2d\xb1Q\xdf\xfa\xe9\x8d|\x8f\x14\x00\x00\x00\xb4\t\x02\x0b\x00\x00\x00\xe0Q\x98\xa
9\xd0\xd5\xc7\x1c$Izp\xee>\x9a\xd8\xfa\x98\x1d\xffdr\x7f\x153\x8f\xfa\xf8\xa3\xcdQJ\x07\xec\x
e5\xc8\xf5X\x95\x96\x1eu\n\xdb\xac\xa4-
{\xf9{\xdbe\xf6\xc0#\xfe\xa7\t\xdd\xaf\xed\x9a\xd9\xd1\xf5\xe4\x83\xdawf\xc7w>m\xdb\xbc5-
X\xff
\xb3\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd02\xff?\xca\x9f\x86X\x17m\x83=\
x00\x00\x00%tEXtdate:create\x002017-08-
10T07:22:07+00:00u\xea\xe6c\x00\x00\x00%tEXtdate:modify\x002017-08-
10T07:22:07+00:00\x04\xb7^\xdf\x00\x00\x00\x00IEND\xaeB`\x82'
Bash

写入二进制文件

open()方法的 wb 模式用于以写入格式打开文件。

注意 − 二进制文件不可读,并且内容不可识别。

让我们看完整的示例。在这里,文件将以 E驱动器 的名称存储。

示例

MyDemoBinary.bin −

#以写入格式以二进制格式打开文件
f=open("E:\MyDemoBinary.bin","wb")

#要添加到二进制文件的元素
a=[100, 200, 300]

#将整数元素转换为字节数组
myArr=bytearray(a)

#现在将字节表示写入文件
f.write(myArr)
f.close()
Bash

输出

运行文件后,文件可在设置路径即E驱动器中看到:

如何在Python中读取或写入二进制数据?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册