如何在Google App Engine中的python中打开文件?

时间:2018-06-25 13:37:13

标签: python google-app-engine

 new_file = open('../pages/pdf/test.PDF', 'rb').read()

继续给我找不到文件/目录

我也在我的app.yaml中尝试过此操作:

 - url: /test.((pdf)|(PDF))
   static_files: pages/pdf/test.PDF
   upload: pages/pdf/test.PDF

文件结构

 -app.yaml
 pages
   -index.html
   -page1.html
   pdf
     -test.PDF
 entities
   -booking.py (file that im writing the above code)

如何在Google App Engine中正确打开文件?

这是app.yaml处理程序

 - url: /sitemap.xml
   script: sitemap.app

 - url: /test.((pdf)|(PDF))
   static_files: pages/pdf/test.PDF
   upload: pages/pdf/test.PDF
   application_readable: true

 - url: /images
   static_dir: pages/images

 - url: /fonts
   static_dir: pages/fonts

 - url: /css
   static_dir: pages/css
   expiration: 1s

尝试使用EmailMessage附加以下文件:

 new_file = open(os.path.dirname(__file__) +'/../pages/pdf/test.PDF').read()

 message = mail.EmailMessage( sender=EMAIL_SENDER, 
 subject=subject,body=theBody,to=['myemail@gmail.com'],attachments= 
 [('test',new_file)])

 message.send()

在调试中显示:无效的附件类型

1 个答案:

答案 0 :(得分:0)

应用程序代码无法访问应用程序静态内容中包含的默认文件(即与static_filesstatic_dir处理程序配置模式匹配)。如果要进行这种访问,则需要为各个application_readable: true处理程序配置设置app.yaml选项。参见GAE: file_get_contents() and static files

一旦这样做,将可以使用相对于应用程序/服务根目录(即app.yaml文件所在的路径)的路径访问该文件,在您的情况下,它将为pages/pdf/test.PDF