Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/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:读取GuitarPro(.gp5)文件_Python_Guitar - Fatal编程技术网

Python:读取GuitarPro(.gp5)文件

Python:读取GuitarPro(.gp5)文件,python,guitar,Python,Guitar,我是新来这里写问题的,所以请随时指出我可以如何提高未来问题的质量 编辑:评论中要求包含更多代码 我正在尝试将GuitarPro文件读入python。这些文件基本上包含歌曲的乐谱,但包含的信息比例如MIDI文件更多 我想将注释和注释的持续时间解析为一个列表结构。此外,我希望还可以从GuitarPro文件解析其他效果,例如弯曲、幻灯片、锤击等 我一直在尝试使用图书馆,但遇到了问题: import guitarpro import os # 'wet_sand.gp5' is the guitar

我是新来这里写问题的,所以请随时指出我可以如何提高未来问题的质量

编辑:评论中要求包含更多代码

我正在尝试将GuitarPro文件读入python。这些文件基本上包含歌曲的乐谱,但包含的信息比例如MIDI文件更多

我想将注释和注释的持续时间解析为一个列表结构。此外,我希望还可以从GuitarPro文件解析其他效果,例如弯曲、幻灯片、锤击等

我一直在尝试使用图书馆,但遇到了问题:

import guitarpro
import os

# 'wet_sand.gp5' is the guitar pro file
parsed_song = guitarpro.parse('wet_sand.gp5')
song = guitarpro.gp5.GP5File(parsed_song,encoding='UTF-8')
song.readSong()
我从
ReadSong()
()中得到以下错误:

回溯(最近一次呼叫最后一次):
文件“”,第8行,在
song.readSong()
readSong中的第62行文件“C:\Python27\lib\site packages\guitarpro\gp5.py”
song.version=self.readVersion()
readVersion中的第114行文件“C:\Python27\lib\site packages\guitarpro\iobase.py”
self.version=self.readByteSizeString(30)
文件“C:\Python27\lib\site packages\guitarpro\iobase.py”,第97行,在readByteSizeString中
返回self.readString(大小,self.readByte())
文件“C:\Python27\lib\site packages\guitarpro\iobase.py”,第47行,readByte格式
如果计数=1,则返回(self.read(*args,default=default)
文件“C:\Python27\lib\site packages\guitarpro\iobase.py”,第35行,已读
data=self.data.read(计数)
AttributeError:“Song”对象没有属性“read”

查看提供的示例,例如一个。我认为您不需要这一部分

song=guitarpro.gp5.gp5文件(已解析的_song,编码='UTF-8')

以下内容应该足够了,因为parse已经调用了readSong

song=guitarpro.parse('wet_sand.gp5')

最后,文件格式似乎是由parse自动确定的

举个例子,你可以这样做

import guitarpro
song = guitarpro.parse('test.gp5')

for track in song.tracks:
    for measure in track.measures:
        for voice in measure.voices:
            for beat in voice.beats:
                for note in beat.notes:
                    print(note.durationPercent)
                    print(note.effect)

您可以通过发布导致错误的确切代码,以及错误的全文(复制并插入),包括整个回溯来改进此问题。您还应提供足够的数据,以便在您不断收到错误、错误消息(以及可能的回溯)时,有人能够重现您的问题将帮助调试。如果您不发布消息,则很难提供帮助。我现在已经用错误更新了代码,希望现在更好。也许可以看看一些示例?例如,感谢您的回答。但是,就我所能看到的而言,我无法从中获得注释、持续时间和效果(我可能在这里错了)重点是我只想要:按顺序排列的音符、每个音符的持续时间和可选效果(弯曲、滑动等)。希望这是有意义的。如果我解析了midi文件,我就无法获得弯曲和幻灯片等效果。你有GP5文件的示例吗?我可以检查一下吗?但我会在Stackoverflow上为此创建一个新问题。理想情况下,每个问题都应该集中在一个非常具体的问题上。回溯应该由“我的答案”解决,但你的后续问题是:estion对我来说似乎是一个新问题。@eanderson我将开始一个新的线程。问题从一开始就是:“如何仅从带有我引用的包的.gp5文件中提取注释?”,但我知道这可能还不够清楚。请记住,我是新来的,我正在努力学习如何提出好的问题。感谢迄今为止的帮助!
import guitarpro
song = guitarpro.parse('test.gp5')

for track in song.tracks:
    for measure in track.measures:
        for voice in measure.voices:
            for beat in voice.beats:
                for note in beat.notes:
                    print(note.durationPercent)
                    print(note.effect)