Зачем читать весь файл, чтобы изменить четыре байта в начале?Разве это не должно работать?
with open("filename.txt", "r+b") as f:
f.write(chr(10) + chr(20) + chr(30) + chr(40))
Даже если вам нужно прочитать эти байты из файла для вычисления новых значений, вы все равно можете сделать:
with open("filename.txt", "r+b") as f:
fourbytes = [ord(b) for b in f.read(4)]
fourbytes[0] = fourbytes[1] # whatever, manipulate your bytes here
f.seek(0)
f.write("".join(chr(b) for b in fourbytes))