这个问题是怎么提出来的:
with open(path + "/OneChance1.mid") as f:
for line in f.readline():
print(line)
在这里,我只是想读一个midi文件来搜索它的内容。然后我收到这个错误消息:UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 153: character maps to <undefined>
如果我使用open()
的第二个参数,如:与open(path + "/OneChance1.mid"m encoding='utf-8) as f:
一起使用,那么我将收到以下错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 13: invalid start byte
如果我将编码参数改为ascii,我会得到另一个关于序号超出范围的错误。最后我尝试了utf-16,它说文件不是以BOM开头的(这让我笑了起来)。另外,如果我忽略这些错误,我得到的字符与我所期望的数据完全不同。{我的来源是基于这个}
不管怎样,有人知道midi文件使用哪种编码方式吗?我在这方面的研究进展很短,因此我认为值得询问。或者有人可以指出一些其他的可能性或错误?在
它是一个二进制文件,不是像你所期望的那样使用文本编码的文本。在
要在Python中以二进制模式打开文件,请将包含} 。在
"b"
的字符串作为第二个参数传递给^{This page包含格式的说明。在
MIDI文件是二进制内容。但是,通过将文件作为文本文件打开,Python在尝试将文本解码为Unicode时应用默认的系统编码。在
以二进制模式打开文件:
如果您想从文件中了解更多信息,就必须研究MIDI standard file format。另请参见What is the structure of a MIDI file?
相关问题 更多 >
编程相关推荐