首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DocAssemble访谈中由模块处理的访问文件

DocAssemble访谈中由模块处理的访问文件
EN

Stack Overflow用户
提问于 2022-01-05 09:41:21
回答 1查看 56关注 0票数 0

我编写了一个python模块,它从一堆值生成一个图像作为绘图。该模块使用matplotlib和熊猫生成图像。现在,我在从DocAssemble内部访问图像以将图像放入docx模板时遇到了一些麻烦。因此,我有一些问题:

  1. 图像将保存在/usr/share/docassemble/files/image.png中的模块中。我认为这不是保存DA文件的正确途径。在以后的面试中,我可以把这些文件保存到哪里去呢?
代码语言:javascript
复制
plt.savefig("/usr/share/docassemble/files/image.png")
  1. 使用DA实现从这样一个路径到docx文档的映像的正确方法是什么?

从da yml文件中提取

代码语言:javascript
复制
---
modules:
  - .plot_file
[...]
---
code: |
 plot_file(datapoints)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-05 11:32:56

您可以在YAML中初始化DAFile对象,然后将该对象传递给您的plot_file()函数。您的plot_file()函数可以将数据写入.path()指示的路径,然后运行.commit()。这将确保您的代码正常工作,即使服务器将其文件保存在S3上。

代码语言:javascript
复制
modules:
  - .plot_file
---
objects:
  - myfile: DAFile
---
code: |
  plot_file(datapoints, myfile)

然后,在您的模块中,您可以执行如下操作:

代码语言:javascript
复制
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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70590690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档