python - webapp2 - 只读文件系统错误

标签 python google-app-engine jinja2 webapp2

我正在使用 Python (webapp2) 和 Jinja2 开发一个 Google App Engine 应用程序,我正在尝试使用 reportlab 创建一个 PDF 文件 图书馆。

例子:

from reportlab.pdfgen import canvas

class pdf(webapp2.RequestHandler):
  def get(self):
    x = 50
    y = 750
    c = canvas.Canvas("file.pdf")
    c.drawString(x*5,y,"Output")
    c.line(x,y-10,x*11,y-10)
    c.save()

当我运行服务器时,出现以下错误:

raise IOError(errno.EROFS, 'Read-only file system', filename)
IOError: [Errno 30] Read-only file system: u'file.pdf'

最佳答案

您不能写入 appengine 文件系统——毕竟,由于您有多台机器(并且您不能保证始终使用相同的机器),您会写入哪台机器的文件系统?

但是,reportlab canvas 似乎接受了一个打开的文件对象。我不能保证这会起作用,但您可以尝试传递一个打开的类似文件的对象。例如io.BytesIO甚至 webapp2.Response.out

import io
class pdf(webapp2.RequestHandler):
  def get(self):
    x = 50
    y = 750
    c = canvas.Canvas(self.response.out)
    c.drawString(x*5,y,"Output")
    c.line(x,y-10,x*11,y-10)
    c.save()

关于python - webapp2 - 只读文件系统错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36119453/

相关文章:

Django 脆皮形式与 jinja2

javascript - Google 图表 - 无效语法或意外标记

python - 我的 HTML 表格打印\u0027 而不是撇号

python - 将计算值元素添加到多维 numpy 数组的快速方法

android - 从安卓到谷歌应用引擎

python - Google 云存储 <-> Google App Engine -> Google BigQuery

在 try block 中引发错误的 pythonic 方式

python - 如何在redis-py中设置等待管道响应的redis超时?

google-app-engine - Go API 的 KEY_RESERVED_PROPERTY 等价物是什么?数据存储

html - Django 复选框样式