boto3 S3 Анализ объектов

Я пытаюсь написать скрипт Python для обработки аудиоданных, хранящихся на S3.

У меня есть объект S3, который я вызываю, используя

def grabAudio(filename, directory):

     obj = s3client.get_object(Bucket=bucketname, Key=directory+'/'+filename)

return obj['Body'].read()

Доступ к данным с помощью

print(obj['Body'].read())

дает правильную звуковую информацию. Так что доступ к данным из ведра просто отличный.

Когда я пытаюсь затем использовать эти данные в моей библиотеке обработки звука (pydub), это не удается:

audio = AudioSegment.from_wav(grabAudio(filename, bucketname))

Traceback (most recent call last): File "split_audio.py", line 38, in <module> audio = AudioSegment.from_wav(grabAudio(filename, bucketname)) File "C:\Users\jmk_m\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydub\audio_segment.py", line 544, in from_wav return cls.from_file(file, 'wav', parameters) File "C:\Users\jmk_m\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydub\audio_segment.py", line 456, in from_file file.seek(0) AttributeError: 'bytes' object has no attribute 'seek'

Каков формат объекта, поступающего из s3? Байтовый массив, я полагаю? Если да, то есть ли способ преобразовать его в формат .wav без сохранения на диск? Я пытаюсь воздержаться от сохранения на диск.

Также открыт для альтернативных библиотек обработки звука.


person jmkmay    schedule 26.02.2018    source источник
comment
Вы можете использовать io.BytesIO для создания файлового объекта из bytes и передать его в свою библиотеку: stackoverflow.com/a/44437265/200603< /а>   -  person Linas    schedule 27.02.2018


Ответы (1)


Спасибо Линасу за ссылку на аналогичную проблему и Jiaaro за ответ.

 import io
    s = io.BytesIO(y['data'])
    AudioSegment.from_file(s).export(x, format='mp3')

Позволяет мне напрямую извлекать данные из ведра в память с помощью

obj = s3client.get_object(Bucket=bucketname, Key=customername+'/'+filename)

data = io.BytesIO(obj['Body'].read())
audio = AudioSegment.from_file(data)
person jmkmay    schedule 27.02.2018