问题
你想读写二进制文件,比如图片,声音文件等等。
解决方案
使用模式为 rb 或 wb 的 open() 函数来读取或写入二进制数据。比如:
# Read the entire file as a single byte string
with open('somefile.bin', 'rb') as f:
data = f.read()
# Write binary data to a file
with open('somefile.bin', 'wb') as f:
f.wr
问题
你想读写一个二进制数组的结构化数据到Python元组中。
解决方案
可以使用 struct 模块处理二进制数据。 下面是一段示例代码将一个Python元组列表写入一个二进制文件,并使用 struct 将每个元组编码为一个结构体。
from struct import Struct
def write_records(records, format, f):
'''
Write a sequence of tuples to a binary file of structures.
处理上传的文件:
f1 = request.FILES['pic']
fname = '%s/%s' % (settings.MEDIA_ROOT, f1.name)
with open(fname, 'w') as pic:
for c in f1.chunks():
pic.write(c)
测试报错:
TypeError at /upload/
write() argument must be str, not bytes
把之前的打开语句修改为用二进制方式打开:
python对二进制文件的操作需要使用bytes类,直接写入整数是不行的,如果试图使用f.write(123)向文件中以二进制写入123,结果提示参数不是bytes类型。
import os
import struct
a = 0x1A2B3C4D
b = 0x239875ad3d5ffaaa
filepath = 'D:\\wygDocument\\python\\code\\abc.dat'
f_in = open(filepath,'wb+')
for value in range(1,