什么是ValueError:太多值无法解包(预期2)?

时间:2019-06-26 04:15:26

标签: python python-3.x csv midi audio-player

我正在尝试将midi文件转换为csv,进行更改,然后再更改回midi。我想使用py_midicsv模块在python中完成所有操作。

但是,当我尝试遵循https://github.com/timwedde/py_midicsv

上的文档时,我遇到了错误
#Convert back to csv
import py_midicsv
csv_string = py_midicsv.midi_to_csv("example.mid")
midi_object = py_midicsv.csv_to_midi(csv_string)

上面的代码直接来自文档,但是我遇到了错误:

ValueError                                Traceback (most recent call last)
<ipython-input-17-2cb6d586ec9e> in <module>
      1 #Convert back to csv
      2 import py_midicsv
----> 3 midi_object = py_midicsv.csv_to_midi(csv_string)

~/.local/lib/python3.6/site-packages/py_midicsv/csvmidi.py in parse(file)
     44             pattern.append(track)
     45         else:
---> 46             event = csv_to_midi_map[identifier](tr, time, identifier, line[3:])
     47             track.append(event)
     48     pattern.make_ticks_rel()

~/.local/lib/python3.6/site-packages/py_midicsv/csv_converters.py in to_AfterTouchEvent(track, time, identifier, line)
     24 
     25 def to_AfterTouchEvent(track, time, identifier, line):
---> 26     cannel, value = map(int, line)
     27     return AfterTouchEvent(tick=time, channel=channel, value=value)
     28 

ValueError: too many values to unpack (expected 2)

此错误是什么意思,我该如何解决?

1 个答案:

答案 0 :(得分:1)

cannel, value = map(int, line)

问题在于此行。 您正在尝试将此map对象解压缩为2个对象,但是它包含2个以上的对象,因此python不知道如何处理其余的值。

您将需要了解此map对象包含的内容以及需要从中获取哪些数据。尝试打印它,看看它包含什么数据。

相关问题