在Python中将浮点数列表转换为缓冲区?

oko*_*man 5 python floating-point buffer list

我正在玩PortAudio和Python.

data = getData()
stream.write( data )
Run Code Online (Sandbox Code Playgroud)

我希望我的流播放声音数据,用Float32值表示.因此我使用以下功能:

def getData():
    data = []
    for i in range( 0, 1024 ):
        data.append( 0.25 * math.sin( math.radians( i ) ) )
    return data
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为stream.write想要传入缓冲区对象:

TypeError: argument 2 must be string or read-only buffer, not list
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如何将我的浮动列表转换为缓冲区对象?

Unk*_*own 8

import struct

def getData():
    data = []
    for i in range( 0, 1024 ):
        data.append( 0.25 * math.sin( math.radians( i ) ) )
    return struct.pack('f'*len(data), *data)
Run Code Online (Sandbox Code Playgroud)