Gravando bits em um arquivo binário

Eu tenho 23 bits representados como uma sequência e preciso gravar essa sequência em um arquivo binário como 4 bytes. O último byte é sempre 0. O código a seguir funciona (Python 3.3), mas não parece muito elegante (eu sou novo no Python e na programação). Você tem alguma dica para melhorar? Parece que um loop for pode ser útil, mas como faço para cortar dentro do loop sem obter um IndexError? Observe que, quando extraio os bits em um byte, inverto a ordem dos bits.

from array import array

bin_array = array("B")
bits = "10111111111111111011110"    #Example string. It's always 23 bits
byte1 = bits[:8][::-1]
byte2 = bits[8:16][::-1]
byte3 = bits[16:][::-1]
bin_array.append(int(byte1, 2))
bin_array.append(int(byte2, 2))
bin_array.append(int(byte3, 2))
bin_array.append(0)

with open("test.bnr", "wb") as f:
    f.write(bytes(bin_array))

# Writes [253, 255, 61, 0] to the file

questionAnswers(4)

yourAnswerToTheQuestion