Чтение байтов из волнового файла Python

Я работаю над небольшим аудиопроектом, и часть его требует использования файлов wave и flac. Я пытаюсь понять, как читать метаданные в каждом из них и как добавлять теги вручную. Мне сложно понять, как читать байты такими, какие они есть.

Я ссылался на эту страницу и несколько других, чтобы увидеть полный формат файла Wave, однако для некоторых файлов Wave я получаю некоторые расхождения. Я хочу видеть шестнадцатеричные байты, чтобы видеть, какие различия возникают.

Использование простого open('fname', 'rb') и read возвращает только байты в виде строк. Использование struct.unpack сработало для некоторых волновых файлов, однако оно ограничено печатью в виде строк, целых чисел или коротких замыканий, и я не могу точно увидеть, что происходит не так, когда я его использую. Есть ли другой способ прочитать этот файл в шестнадцатеричном формате?

Спасибо


person user2891789    schedule 18.08.2015    source источник
comment
Что вы подразумеваете под чтением этого файла в шестнадцатеричном формате?   -  person Holt    schedule 18.08.2015


Ответы (1)


Я предполагаю, что вы просто хотите отобразить содержимое двоичного файла в шестнадцатеричном формате. Во-первых, вам не нужно использовать для этого Python, так как некоторые редакторы для него изначально, например vim.

Предполагая, что у вас есть строка, полученная при чтении файла, вы можете легко изменить ее на список шестнадцатеричных значений:

with open('fname', 'rb') as fd:      # open the file
    data = rd.read(16)               # read 16 bytes from it
    h = [ hex(ord(b)) for b in data] # convert the bytes to their hex value
    print (h)                        # prints a list of hexadecimal codes of the read bytes
person Serge Ballesta    schedule 18.08.2015
comment
Знаете ли вы, что есть идея для обратной цели? У меня есть аудиоданные в байтовом формате, и я хотел бы их использовать. Все, что я знаю, это то, что они представляют формат FLAC. - person Ben; 20.03.2020