Что такое ValueError: слишком много значений для распаковки (ожидается 2)? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь преобразовать MIDI-файлы в CSV, внести изменения, а затем вернуться обратно в MIDI.Я хочу сделать все это в python, используя модуль py_midicsv.

Однако я сталкиваюсь с ошибкой, когда пытаюсь следовать документации по: 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 Ответ

1 голос
/ 26 июня 2019
cannel, value = map(int, line)

проблема с этой линией. вы пытаетесь распаковать этот map объект в 2 объекта, но он состоит из более чем 2 объектов, поэтому python не знает, что делать с остальными значениями.

вам нужно будет понять, что содержит этот map объект, и какие данные вам нужно от него получить. попробуйте распечатать его и посмотреть, какие данные он содержит.

...