Форум сайта python.su
Подскажите, как правильно “разобрать” какой-либо mp3 файл по байтам в Python3?
В последствии передать полученные байты по uart на другой комп.
Ниже кусок кода который работает. Но, очень медленно! Думаю потому, что я каждую итерацию беру mp3 файл и работаю с ним!
В итоге, что бы передать 22 байта из нескольких мегабайт мне потребовалось ждать около 30 мин!
import serial import time chunk_size = 1 # размер куска f = open(/home/user/split/music.mp3, 'rb')# Открыть file file_content = f.read() # Содержимое .mp3 файла сохранили в file_content f.close() quotient = len(file_content) // chunk_size # Узнали целочисленное деление for k in range(0,quotient): with open(/home/user/split/music.mp3, 'rb') as f: for chunk in iter(lambda: f.read(chunk_size), b''): cmd = chunk port.write(cmd)
Отредактировано zerg_swarm (Дек. 31, 2022 10:21:17)
Офлайн
zerg_swarmЕстественно!
Может если как-то работать не с mp3 файлом, а с переменной “file_content” которая в оперативке компа?
Офлайн
zerg_swarmПросто читай его блоками и передавай каждый блок. Не надо его размер вычислять. Конец файла наступает, когда метод .read() возвращает пустую строку.
Подскажите, как правильно “разобрать” какой-либо mp3 файл по байтам в Python3?
В последствии передать полученные байты по uart на другой комп.
>>> ifname = '/etc/passwd' >>> >>> with open(ifname, 'rb') as fin: ... block_size = 1024 ... block = fin.read(block_size) ... while block: ... print(len(block)) ... block = fin.read(block_size) ... 1024 1024 796 >>>
>>> ifname = '/etc/passwd' >>> >>> with open(ifname, 'rb') as fin: ... block_size = 512 ... block = fin.read(block_size) ... while block: ... print(len(block)) ... block = fin.read(block_size) ... 512 512 512 512 512 284 >>>
Отредактировано py.user.next (Дек. 31, 2022 16:37:11)
Офлайн
когда поймешь что такое байты - питон тебе поможет
Офлайн
ZerGКогда изучишь школьную программу русского языка, тебя начнут воспринимать тут всерьез, а не как шкодливого школьника!
когда поймешь что такое байты - питон тебе поможет
Отредактировано Olezhka (Янв. 6, 2023 13:50:01)
Офлайн