Pan*_*Jee 39 python google-app-engine
是否可以在GAE上打开文件只是为了读取其内容并获取最后修改的标签?
我得到一个IOError:[Errno 13]文件无法访问:我知道我无法删除或更新,但我相信阅读应该是可能有人遇到过类似的问题吗?
os.stat(f,'r').st_mtim
Run Code Online (Sandbox Code Playgroud)
Woo*_*ble 54
您可能已在app.yaml中将该文件声明为静态.您的应用程序无法使用静态文件; 如果你需要将它们作为静态文件提供并将它们作为应用程序文件读取,则需要在项目中包含2个副本(理想情况下使用符号链接,因此实际上不需要维护实际的副本.)
2014年11月更新:
正如评论中所建议的那样,您现在可以使用application_readable标志执行此操作:
application_readable
Run Code Online (Sandbox Code Playgroud)
可选的.默认情况下,在静态文件处理程序中声明的文件作为静态数据上载,并且仅提供给最终用户,应用程序无法读取它们.如果此字段设置为true,则文件也会作为代码数据上载,以便您的应用程序可以读取它们.这两个上传都是针对您的代码和静态数据存储资源配额收取的.
请参阅https://cloud.google.com/appengine/docs/python/config/appconfig#Static_Directory_Handlers
MSt*_*odd 11
你可以阅读文件,但它们是Goooogle古怪的GAE文件系统,所以你必须使用相对路径.我刚刚在同一个文件夹中发布了一个带有main.py文件和test.txt的快速应用程序.不要忘记st_mtime上的'e'.
import os
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
class MainHandler(webapp.RequestHandler):
def get(self):
path = os.path.join(os.path.split(__file__)[0], 'test.txt')
self.response.out.write(os.stat(path).st_mtime)
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
+1为新的"application_readable:true"功能.在使用这个新功能之前,我确实遇到了GAE" 古怪 "文件系统的问题,同时导入了NLP Montylingua.
问题:Monty使用open(filename,'rb')和来自静态文件的file_ptr.read()文件指针.我的实现在我的本地Windows系统上工作但在部署时失败了!
修复:指定读取file_ptr.read(4)#4二进制字节的预期字节数
似乎是与想要读取更多(默认为8个)字节的64位GAE服务器相关的东西.无论如何,花了一段时间才发现这个问题.Montylingua现在加载.
归档时间: |
|
查看次数: |
19539 次 |
最近记录: |