模式描述
rb 打开一个文件以只读二进制格式。文件指针位于文件的开头。这是默认模式。
rb+ 打开一个文件以二进制格式进行读写。文件指针放置在文件的开头。
wb 打开仅以二进制格式写入的文件。如果文件存在则覆盖该文件。如果该文件不存在,则创建一个新文件进行写入。
wb+ 打开一个文件以二进制格式进行写入和读取。如果文件存在,则覆盖现有文件。如果文件不存在,则创建一个新文件进行读写。
ab 打开一个文件以二进制格式追加。如果文件存在,则文件指针位于文件末尾。也就是说,该文件处于追加模式。如果该文件不存在,则会创建一个新文件进行写入。
ab+ 打开文件以二进制格式追加和读取。如果文件存在,则文件指针位于文件末尾。文件以追加模式打开。如果该文件不存在,则会创建一个新文件进行读写。
读取二进制文件假设我们有一个二进制文件。我们可以使用 read() 方法来读取它。首先,我们将使用 open() 方法的 rb 模式打开二进制文件。我们在 d: 驱动器中有以下源文件 -
示例让我们看看完整的代码
# open a binary filef = open('d:\pythonlogo.png', 'rb')# read linesdata = f.read()# display the dataprint(data)
输出二进制文件不可读,内容无法识别。实际产量更大。下面我们只展示了一部分。
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\x00chrm\x00\x00z&\x00\x00\x80\x84\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17p\x9c\xbaq<\x00\x00\x00\x06bkgd\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\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!\x88(\x02\x9a\x8c\x85\xea\x80b\xc5\x02\xa1\xf8z\xa78\x8aj\x13eef\x1d\xdb\x94\x80@\x08\xea\xa0\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\xa9\xd0\xd5\xc7\x1c$izp\xee>\x9a\xd8\xfa\x98\x1d\xffdr\x7f\x153\x8f\xfa\xf8\xa3\xcdqj\x07\xec\xe5\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'
写入二进制文件open()方法的wb模式用于以写入格式打开文件。
注意 - 二进制文件不可读,内容无法识别
让我们看一下完整的示例。在这里,文件将存储在e盘中,名称为
示例mydemobinary.bin -
# open a file in binary format for writingf = open(e:\mydemobinary.bin,wb)# elements to be added to the binary filea = [100, 200, 300]# convert the integer elements to a bytearraymyarr = bytearray(a)# the byte representation ius now written to the filef.write(myarr)f.close()
输出运行文件后,文件在设置的路径即e盘中可见 -
以上就是如何在python中读取(或写入)二进制数据?的详细内容。
