我编写了一个python模块,它从一堆值生成一个图像作为绘图。该模块使用matplotlib和熊猫生成图像。现在,我在从DocAssemble内部访问图像以将图像放入docx模板时遇到了一些麻烦。因此,我有一些问题:
/usr/share/docassemble/files/image.png中的模块中。我认为这不是保存DA文件的正确途径。在以后的面试中,我可以把这些文件保存到哪里去呢?plt.savefig("/usr/share/docassemble/files/image.png")从da yml文件中提取
---
modules:
- .plot_file
[...]
---
code: |
plot_file(datapoints)发布于 2022-01-05 11:32:56
您可以在YAML中初始化DAFile对象,然后将该对象传递给您的plot_file()函数。您的plot_file()函数可以将数据写入.path()指示的路径,然后运行.commit()。这将确保您的代码正常工作,即使服务器将其文件保存在S3上。
modules:
- .plot_file
---
objects:
- myfile: DAFile
---
code: |
plot_file(datapoints, myfile)然后,在您的模块中,您可以执行如下操作:
def plot_file(datapoints, the_file):
the_file.initialize(filename="plot.png")
...
with open(the_file.path(), 'rb') as file_pointer:
file_pointer.write(data)
the_file.commit()有关示例,请参阅本节中的第一个示例。
Docassemble被设计为一个基于云的应用程序,因此您不能假设在time 1处理请求的机器将是在time 2处理请求的机器。这就是为什么文件被抽象为DAFile对象的原因;DAFile代码负责将文件存储在S3上并从S3检索它。DAFile类还提供了一个权限系统,以便服务器上的其他用户无法访问您的文件,除非您为了授予权限而专门调用了.set_attributes()或.user_access()。
https://stackoverflow.com/questions/70590690
复制相似问题