从波形文件python读取字节
Posted
技术标签:
【中文标题】从波形文件python读取字节【英文标题】:Reading bytes from wave file python 【发布时间】:2015-08-18 09:36:10 【问题描述】:我正在做一个小音频项目,其中一部分需要使用波形文件和 flac 文件。我试图弄清楚如何读取每个元数据以及如何手动添加标签。我无法弄清楚如何按原样读取字节。
我一直在参考this page 和其他几个人来查看 Wave 文件的完整格式,但是对于某些 Wave 文件,我得到了一些差异。我希望能够查看十六进制字节,以了解发生了什么差异。
简单地使用open('fname', 'rb')
并读取,仅将字节作为字符串返回。使用 struct.unpack 对一些波形文件有效,但是它仅限于打印为字符串、整数或短裤,而且我在使用它时无法确切看到出了什么问题。有没有其他方法可以用十六进制读取这个文件?
谢谢
【问题讨论】:
“以十六进制读取此文件”是什么意思? 【参考方案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
【讨论】:
您是否也知道用于反向目的的想法?我有字节格式的音频数据,我想使用它们。我只知道它们代表 FLAC 格式。以上是关于从波形文件python读取字节的主要内容,如果未能解决你的问题,请参考以下文章
Python 3:将波形数据(字节数组)转换为浮点值的 numpy 数组
将 .csv 文件从 URL 读取到 Python 3.x - _csv.Error:迭代器应返回字符串,而不是字节(您是不是以文本模式打开文件?)