【问题标题】:What is ValueError: too many values to unpack (expected 2)?什么是 ValueError:要解包的值太多(预期为 2)?
【发布时间】:2019-06-26 04:15:26
【问题描述】:

我正在尝试将 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)

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

【问题讨论】:

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


    【解决方案1】:
    cannel, value = map(int, line)
    

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

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

    【讨论】:

    • 并且“channel”(下一行使用)拼写错误,所以这部分代码显然没有经过测试。
    猜你喜欢
    • 2014-07-31
    • 2017-08-29
    • 1970-01-01
    • 2016-05-24
    • 2017-12-14
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多