Python 我是否可以指定或获取Abjad(v3.2)输出的PDF文件';创建后的路径或名称?
我有一个flask服务器,它使用abjad v3.2生成音乐PDF 使用Python 我是否可以指定或获取Abjad(v3.2)输出的PDF文件';创建后的路径或名称?,python,pdf,flask,metadata,lilypond,Python,Pdf,Flask,Metadata,Lilypond,我有一个flask服务器,它使用abjad v3.2生成音乐PDF 使用abjad.show()后,我想获取创建文件的路径。 我可以使用abjad.Configuration().abjad_output_directory获取输出目录,但不能使用我创建的特定文件 我的问题是,如何获取刚刚创建的文件(不是文件夹,而是特定文件)的路径,以便将其发送回用户 创建PDF文件的My python代码: staff = abjad.Staff(abjad_notes) # attach BPM to n
abjad.show()
后,我想获取创建文件的路径。
我可以使用abjad.Configuration().abjad_output_directory
获取输出目录,但不能使用我创建的特定文件
我的问题是,如何获取刚刚创建的文件(不是文件夹,而是特定文件)的路径,以便将其发送回用户
创建PDF文件的My python代码:
staff = abjad.Staff(abjad_notes)
# attach BPM to notes file
metronome_mark = abjad.MetronomeMark((1, 4), bpm)
abjad.attach(metronome_mark, staff[0])
# creates lilypond file object
lilypond_file = abjad.LilyPondFile.new(staff)
# notes title
lilypond_file.header_block.title = abjad.Markup(title)
# show PDF on screen
abjad.show(lilypond_file)
在Abjad 3.2中,您可以使用
Abjad.persist
手动设置Abjad生成的.ly
和.pdf
文件的输出路径(而不是让Abjad在默认文件夹~/.Abjad/output
中创建它们)
要使用它,首先创建一个实例化abjad.LilyPondFile
的lilypond\u文件变量,然后将其用作abjad.persist.as\u pdf(lilypond\u文件,'/path/To/file.pdf')
。在上面的最小示例中,这变成:
staff = abjad.Staff(abjad_notes)
# attach BPM to notes file
metronome_mark = abjad.MetronomeMark((1, 4), bpm)
abjad.attach(metronome_mark, staff[0])
# creates lilypond file object
lilypond_file = abjad.LilyPondFile.new(staff)
# notes title
lilypond_file.header_block.title = abjad.Markup(title)
# save pdf file at a custom location
abjad.persist.as_pdf(lilypond_file, '/path/to/file.pdf')
我不知道这是否对您有帮助,但您可以使用abjad.PersistenceManager
手动设置abjad生成的.ly
和.pdf
文件的输出路径(而不是让abjad在文件夹~/.abjad/output
中创建它们)。下面是一个如何使用它的示例:创建lilypond\u文件
变量后,将其用作abjad.PersistenceManager(lilypond\u文件).as\u pdf('~/output\u score.pdf')
。如果这有帮助,让我知道,我可以写它作为一个正确的答案,而不是作为一个评论。@gilbertohasnofb它工作了,非常感谢。但我有一些补充。你的代码是ABJAD3.0的。在v3.2中,它应该像abjad.persist.as_pdf(lilypond_文件,“/path/to/file.pdf”)
。它帮助了我,满足了我的需要,谢谢!是的,不幸的是Abjad的向后兼容性很差,它们不断重命名函数和类,所以这总是很棘手。我还没有升级到3.1,因为我现在在一些项目的中间。我现在将创建一个反映这些情况的答案。