2013-01-02 8 views
5

Tôi muốn truy cập tệp trong máy tính của mình từ ứng dụng công cụ ứng dụng của google. Nếu tôi đặt các tập tin trong thư mục src của ứng dụng không có vấn đề nhưng tôi cần tập tin này được ra khỏi thư mục đó.IOError: [Errno 13] không thể truy cập tệp GAE

Khi tôi cố gắng truy cập vào tập tin này, tôi nhận được lỗi sau:

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' 

Tôi đã đọc rằng nếu một tập tin được định nghĩa là tĩnh trong app.yaml không thể truy cập từ GAE. Đây là app.yaml của tôi. Tôi không thể tìm ra nếu có cái gì đó sai:

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

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

Và đây là một phần của ứng dụng mà cố gắng để truy cập file:

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

Không ai biết tại sao tôi nhận được " tệp không thể truy cập "lỗi?

Cảm ơn!

+0

trùng lặp càng tốt này của [ Tệp IOError: \ [Errno 13 \] không thể truy cập được bằng Google AppEngine 1.6.1] (http://stackoverflow.com/questions/8799304/ioerror-errno-13-file-not-accessible-with-google-appengine-1 -6-1) – bain

Trả lời

9

Đặt tệp trong cùng thư mục với phần còn lại của tệp ứng dụng của bạn (ví dụ: nơi app.yaml là).

Tất cả các tệp bạn muốn ứng dụng của bạn truy cập phải ở cùng một nơi, trong thư mục ứng dụng chính của bạn.

GAE không thể truy cập các tệp tùy ý ở đâu đó trên máy tính của bạn, giống như nó không thể truy cập các tệp được lưu "ở đâu đó" khác khi được triển khai.

filename='myfile.doc' 

Giả sử nó nằm trong 'gốc' (giống như app.yaml).

+1

Thậm chí nếu nó có thể truy cập các tệp như vậy, hãy mã hóa vị trí của chúng trên ổ đĩa cứng của bạn trong một ứng dụng có nghĩa là đang chạy trên Google đám mây là một ý tưởng tồi. Nếu Google có thể truy cập trực tiếp vào ổ cứng của bạn, họ sẽ không cho bạn biết về nó. – geoffspear

+0

Cảm ơn câu trả lời của bạn! – user1930068

0

Trong file app.yaml của bạn, bạn cần phải thực hiện các tập tin có thể nhìn thấy ứng dụng của bạn:

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

Ví dụ trong app.yaml tôi nộp nó trông giống như

- url: /data 
    script: main.app