gpt4 book ai didi

python - 标准 midi 文件使用哪种编码?

转载 作者:行者123 更新时间:2023-11-28 19:55:40 31 4
gpt4 key购买 nike

这是提出这个问题的原因:

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()的第二个参数是这样的:with 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 开头的(出于某种原因这让我笑了)。此外,如果我忽略错误,我得到的字符与我期望的数据类型完全不同。我的期望基于此来源:http://www.sonicspot.com/guide/midifiles.html

无论如何,有人知道 midi 文件使用哪种编码吗?我的研究在这方面还不够,所以我认为值得一问 SO。或者有人可以指出其他一些可能性或错误?

最佳答案

MIDI 文件是二进制内容。但是,通过将文件作为文本文件打开,Python 会应用默认系统编码来尝试将文本解码为 Unicode。

改为以二进制模式打开文件:

with open(midifile, 'rb') as mfile:
leader = mfile.read(4)
if leader != b'MThd':
raise ValueError('Not a MIDI file!')

你必须研究 MIDI standard file format如果您想从文件中了解更多信息。另见 What is the structure of a MIDI file?

关于python - 标准 midi 文件使用哪种编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324151/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com