IOError:[Errno 13]文件无法访问GAE

时间:2013-01-02 12:03:54

标签: python google-app-engine

我想从谷歌应用引擎应用程序访问我的计算机中的文件。如果我把文件放在应用程序的src文件夹中没有问题,但我需要这个文件不在该文件夹中。

当我尝试访问此文件时,我收到下一个错误:

Traceback (most recent call last):
File "C:\Program Files     (x86)\Google\google_appengine\google\appengine\ext\webapp\_webapp25.py", line 712, in __call__
handler.post(*groups)
File "C:\Users\path\Documents\path\oauth2client\appengine.py", line 469, in check_oauth
return method(request_handler, *args, **kwargs)
File "C:\Users\path\Documents\path\myapp.py", line 88, in post
filename=open('C:/Users/path_to_file/Documento 1.docx','r')
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 635, in __init__
raise IOError(errno.EACCES, 'file not accessible', filename)
IOError: [Errno 13] file not accessible: 'C:/Users/path_to_file/Documento 1.docx'

我已经读过,如果在app.yaml中将文件定义为静态,则无法从GAE访问。这是我的app.yaml。我无法弄清楚是否有错误:

application: myapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
script: myapp.py

这是尝试访问该文件的应用程序的一部分:

filename='C:/Users/path_to_file/Documento 1.docx'
media_body = MediaFileUpload(filename,resumable=True)

有人知道为什么我会收到“文件无法访问”错误吗?

谢谢!

2 个答案:

答案 0 :(得分:10)

将文件放在与其他应用程序文件相同的目录中(即app.yaml所在的目录)。

您希望应用程序访问的所有文件必须位于主应用程序目录下的相同位置。

GAE无法在计算机上的某个位置访问任意文件,就像在部署时无法访问“某处”保存的文件一样。

filename='myfile.doc'

假设它在'root'中(与app.yaml相同)。

答案 1 :(得分:0)

在app.yaml文件中,您需要将文件显示给您的应用:

 handlers:
 - url: /<location to your data files>
   script: <your app name>.app

例如,在我的app.yaml文件中,它看起来像这样

- url: /data
  script: main.app