Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:在midi中找不到子字符串_Python_Arduino_Midi - Fatal编程技术网

Python ValueError:在midi中找不到子字符串

Python ValueError:在midi中找不到子字符串,python,arduino,midi,Python,Arduino,Midi,首先,让我声明我是一个完全的编码初学者,我试图解决这个问题的努力是有限的。我正试着遵循这一点。它采用文本化的midi文件,并使用python将其转换为8位。代码附在链接底部附近,我在这里放置代码时遇到了一些格式问题 到使用的文本化midi文件。在运行代码之前,我将input_file=open更改为文本文件路径,如下所示 input_file = open("C:\\Users\\nby20\\Downloads\\megalovania.txt") 运行代码后,我得到了一个预期的文本输出文

首先,让我声明我是一个完全的编码初学者,我试图解决这个问题的努力是有限的。我正试着遵循这一点。它采用文本化的midi文件,并使用python将其转换为8位。代码附在链接底部附近,我在这里放置代码时遇到了一些格式问题

到使用的文本化midi文件。在运行代码之前,我将input_file=open更改为文本文件路径,如下所示

input_file = open("C:\\Users\\nby20\\Downloads\\megalovania.txt") 
运行代码后,我得到了一个预期的文本输出文件,但它是空的,并且出现了一些错误:

Traceback (most recent call last):
File "C:\Users\nby20\Downloads\python_code_for_translation.py", line 184, in <module>
   main()
File "C:\Users\nby20\Downloads\python_code_for_translation.py", line 23, in main
   result[-1] = str(temp_time) + "," + set_bit_prev(on_off_finder(a), note_finder(a), -1)
File "C:\Users\nby20\Downloads\python_code_for_translation.py", line 178, in on_off_finder
   end = in_string.index("ch=") - 1

ValueError: substring not found
回溯(最近一次呼叫最后一次):
文件“C:\Users\nby20\Downloads\python\u code\u for\u translation.py”,第184行,在
main()
文件“C:\Users\nby20\Downloads\python\u code\u for\u translation.py”,第23行,主目录
结果[-1]=str(临时时间)+“,“+设置位上一位(开/关/查找器(a),注释/查找器(a),-1)
文件“C:\Users\nby20\Downloads\python\u code\u for\u translation.py”,第178行,在on\U off\U finder中
end=in_string.index(“ch=”)-1
ValueError:未找到子字符串

任何关于如何解决这一问题的建议都将不胜感激

Traceback类似于调试信息,可用于跟踪抛出错误时调用了哪些函数。似乎错误发生在执行
main
函数的此位条件逻辑(第22-23行)时:

elif time_finder_comm(result[-1]) == temp_time:
    result[-1] = str(temp_time) + "," + set_bit_prev(on_off_finder(a), note_finder(a), -1)
它调用了
on\u off\u finder
函数,该函数只是试图确定该行显示的是“开”还是“关”

文件读取器似乎只需要这样的行:

55248 Off ch=10 n=40 v=64
55248 Meta TrkEnd
TrkEnd
但是,在您上传的文件中,也有这样的行:

55248 Off ch=10 n=40 v=64
55248 Meta TrkEnd
TrkEnd
如果传入的子字符串在字符串中不存在,则
index
函数抛出
ValueError:substring not found
,在这种情况下(下面的第178行)是字符串
“ch”

尝试删除这些行并重新运行脚本?找到所有带有“Trk”的行并将其删除,或者制作3个单独的文件,因为“megalovania.txt”中似乎有3个行块会使脚本出错:

(starting at line 2469):
55248 Meta TrkEnd
TrkEnd
MTrk

...
(starting at line 4071):
58368 Meta TrkEnd
TrkEnd
MTrk

...
(starting at line 6431):
55296 Meta TrkEnd
TrkEnd

尝试了这个方法,我得到了一个类似的错误消息回溯(上次调用):“文件”C:\Users\nby20\Downloads\python\u code\u for_translation(1.py)”,在main()文件“C:\Users\nby20\Downloads\python\u code\u for_translation(1.py)”的第184行,在主temp\u time=time\u finder(a)文件的第12行“C:\Users\nby20\Downloads\python\u code\u for\u translation(1.py)”,第161行,in time\u finder time\u end=in\u string.index(“”)ValueError:substring not found'现在似乎在空行上失败(它表示找不到空格字符)。因为像每种类型的行都有空格一样,我不得不假设它在最后一行崩溃(这是一个空行)。老实说,你正在使用的这个脚本不是很干净/宽容,我只是在这里猜测。如果你想让其他人能够与你一起解决这个问题,你可能应该有一些共享文件夹(带有固定的公共链接)它包含您正在运行的脚本、运行该脚本时使用的文件,以及包含当前错误状态的
error.txt
文件。