Не передавайте bytearray
. Передайте ваши значения напрямую в качестве аргументов:
f.write(pack("IfIII", *int_and_float))
Это bytearray()
вызов , который выдает исключение, которое вы видите, и вам даже не нужен этот тип здесь:
>>> int_and_float = [120,3.5,255,0,100]
>>> bytearray(int_and_float)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
struct.pack()
принимает целые числа (и строки) и выдает байты в качестве вывода:
>>> import struct
>>> struct.pack("IfIII", *int_and_float)
b'x\x00\x00\x00\x00\x00`@\xff\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x00'