我正在编写一个脚本来读取.osu文件并将其转换为特定对象。每个“命中对象”必须多次执行该操作
阅读部分工作正常,但是附加对象是问题
追加对象时,似乎会覆盖列表中的所有现有元素。我一生无法弄清为什么会这样。
我尝试创建一个“临时”列表,该对象将对象存储在本地列表中,而不是“ self.notes”列表中。
我认为该文件的此部分中发生了错误:
if hitobjline != -1:
hitobjects = self.file_lines[hitobjline+1:]
for i in hitobjects:
ln = i[:i.find(':')].split(',')
new_note = [NoteType.Circle, NoteType.Hold][int(ln[3] == '128')]
add_note = File.Note
add_note.NoteTypeByte = ln[3]
add_note.Note_Number = int(ln[0])
add_note.Time = int(ln[2])
add_note.NoteType = new_note
add_note.Raw = ln
self.notes.append(add_note)
print(ln, ln[3], ln[3] == '128', new_note, add_note.NoteType)
对于背景,.osu文件的语法如下:x,y,time,type,hit,end:stuff-i-dont-need-to-worry-about
我期望self.notes[0].NoteType
的输出为osureader.NoteType.Hold
,因为文件的第一行是192,192,410,128,0,2974:0:0:0:0:
(128表示“保留”
但是,我得到的是文件的最后一行osureader.NoteType.Circle。