1. 程式人生 > >python wave 庫 讀取 BytesIO 對象的註意事項

python wave 庫 讀取 BytesIO 對象的註意事項

pen 磁盤io 讀取數據 pre write 沒有 ins 程序 讀取

程序中遇到需要使用臨時文件時,常使用內存中的 io.BytesIO() 代替實體二進制文件,以避免磁盤IO,同時免去了考慮文件名的麻煩。

file = io.BytesIO()
file.write(content)
content = file.getvalue()

如上所示,取值時通常使用 getvalue() 而不是 read(),若使用 read() 讀取數據,需要先 file.seek(0) 使指針回到起點。

wave 模塊默認是同時支持 文件路徑 和 BytesIO 對象的,但當輸入是 BytesIO 時,wave 並沒有自動先 seek(0),故

使用 wave.open(wav_file, ‘rb‘) 之前,需要先 seek(0):

if isinstence(wav_file, io.BytesIO):
    wav_file.seek(0)
with wave.open(wav_file, ‘rb‘) as wf:
    ......
    ......

python wave 庫 讀取 BytesIO 對象的註意事項