使用python读取GAE中的文件

2024-04-25 11:37:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个简单的python项目,它提供两个页面。我使用的是“webapp”框架和django。我要做的是使用一个模板文件,并加载包含实际页面文本的“内容文件”。在

当我尝试使用操作系统打开,我得到以下错误: 页面内容=操作系统打开(pageUrl,'r').read() OSError:[Errno 1]不允许操作:'content\u includes/home.inc.公司'错误

如果我让django模板系统为我读取同一个文件,一切都很好!在

所以问题是我做错了什么django没有???使用相同的“pageUrl”。在

下面的代码将给出错误,而如果我注释掉第一个pageContent赋值,则一切正常。在

代码:

        pageName = "home";

        pageUrl = os.path.join(os.path.normpath('content_includes'), pageName + '.inc')
        pageContent = os.open(pageUrl, 'r').read()
        pageContent=template.render(pageUrl, template_values, debug=True);

        template_values = { 'page': pageContent, 
                           'test': "testing my app" 
                           }

错误:

^{pr2}$

在应用程序yaml公司名称:

handlers:
- url: /javascript
  static_dir: javascript

- url: /images
  static_dir: images

- url: /portfolio
  static_dir: portfolio

- url: /.*
  script: main.py

Tags: 文件django模板url内容reados错误
2条回答

“content\u includes”上的os.path.normpath()是一个无操作的-normpath,只删除双斜杠和其他非规范化。您可能希望构建一个相对于脚本的路径,在这种情况下,您应该执行类似os.path.join(os.path.dirname(__file__), 'content_includes', pageName + '.inc')的操作。在

如果你在开发_应用服务器.py源代码和相关文件您会看到服务器做一些具体的检查,以确保您只打开来自应用程序根目录下的文件(实际上,规则看起来更复杂)。在

对于文件访问问题,我从开发服务器检测“路径权限检查”代码,以发现我使用的是绝对路径。我们应该对appengine做一个补丁来提供更好的错误报告:IIRC应用程序服务器不显示有问题的路径,但是这个错误的版本使调试变得困难。在

相关问题 更多 >