Найти - Пользователи
Полная версия: Как быстро "разобрать" какой-либо mp3 файл по байтам?
Начало » Python для новичков » Как быстро "разобрать" какой-либо mp3 файл по байтам?
1
zerg_swarm
Подскажите, как правильно “разобрать” какой-либо 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)

Вопрос: Как ускорить этот процесс? Может если как-то работать не с mp3 файлом, а с переменной “file_content” которая в оперативке компа?

Olezhka
zerg_swarm
Может если как-то работать не с mp3 файлом, а с переменной “file_content” которая в оперативке компа?
Естественно!
py.user.next
zerg_swarm
Подскажите, как правильно “разобрать” какой-либо mp3 файл по байтам в Python3?
В последствии передать полученные байты по uart на другой комп.
Просто читай его блоками и передавай каждый блок. Не надо его размер вычислять. Конец файла наступает, когда метод .read() возвращает пустую строку.

  
>>> 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
>>>
ZerG
когда поймешь что такое байты - питон тебе поможет
Olezhka
ZerG
когда поймешь что такое байты - питон тебе поможет
Когда изучишь школьную программу русского языка, тебя начнут воспринимать тут всерьез, а не как шкодливого школьника!
"когда поймешь что такое байты - питон тебе поможет" Ну какой же тупорылый школьник так пишет?!
Вот так надо:
Когда поймешь, что такое байты, “Пайтон” тебе поможет!
Ты даже не умеешь правильно писать название языка программирования, на котором ты кодишь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB