2013-01-02 16 views
5

Chcę uzyskać dostęp do pliku na moim komputerze z aplikacji wyszukiwarki Google. Jeśli umieściłem plik w folderze src aplikacji, nie ma problemu, ale potrzebuję tego pliku, aby być poza tym folderem.Błąd IOError: [Errno 13] GAE

Przy próbie uzyskania dostępu do tego pliku dostaję kolejny błąd:

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' 

Czytałem, że jeśli plik jest zdefiniowana jako statyczna w app.yaml nie mogą być dostępne z GAE. To jest moja app.yaml. Nie mogę dowiedzieć się, czy coś jest nie tak:

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

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

I to jest częścią aplikacji, która próbuje uzyskać dostęp do pliku:

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

Czy ktoś wie dlaczego uzyskać " plik niedostępny "błąd?

Dzięki!

+0

możliwym duplikatu [ IOError: \ [Errno 13 \] plik nie jest dostępny w Google AppEngine 1.6.1] (http://stackoverflow.com/questions/8799304/ioerror-errno-13-file-not-accessible-with-google-appengine-1 -6-1) – bain

Odpowiedz

9

Umieść plik w tym samym katalogu, co pozostałe pliki aplikacji (np. Gdzie znajduje się plik app.yaml).

Wszystkie pliki, do których aplikacja ma mieć dostęp, muszą znajdować się w tym samym miejscu, w głównym katalogu aplikacji.

GAE nie może uzyskać dostępu do dowolnych plików w twoim komputerze, tak jak nie ma dostępu do plików zapisanych "gdzieś" w innym miejscu po wdrożeniu.

filename='myfile.doc' 

Zakładamy, że jest w katalogu głównym (tak samo jak app.yaml).

+1

Nawet jeśli miałby dostęp do takich plików, oznaczenie ich lokalizacji na twardym dysku w aplikacji przeznaczonej do działania w Google chmura to zły pomysł. Jeśli Google może uzyskać bezpośredni dostęp do dysku twardego, nie będą o tym mówić. – geoffspear

+0

Dzięki za odpowiedzi! – user1930068

0

W pliku app.yaml trzeba zrobić plik widoczny dla aplikacji:

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

na przykład w moim app.yaml złożenia wygląda to

- url: /data 
    script: main.app 
Powiązane problemy