Reputation: 535
I used google colab to make a dictionary, dump it into a json file and download the file into my laptop by this code:
from google.colab import files
import json
dict = {'apple': 'fruit', 'mango': 'fruit', 'carrot': 'vegetable', 'brocoli': 'vegetable', 'cat': 'animal'}
with open('sampleDictionary.json', 'w') as f:
json.dump(dict, f)
files.download('sampleDictionary.json')
f.close()
When I try to run this code, it gives this error:
MessageError Traceback (most recent call last)
<ipython-input-29-1251d71a0a36> in <module>()
7 json.dump(dict, f)
8
----> 9 files.download('sampleDictionary.json')
10 f.close()
/usr/local/lib/python3.6/dist-packages/google/colab/files.py in download(filename)
176 'port': port,
177 'path': _os.path.abspath(filename),
--> 178 'name': _os.path.basename(filename),
179 })
/usr/local/lib/python3.6/dist-packages/google/colab/output/_js.py in eval_js(script, ignore_result)
37 if ignore_result:
38 return
---> 39 return _message.read_reply_from_input(request_id)
40
41
/usr/local/lib/python3.6/dist-packages/google/colab/_message.py in read_reply_from_input(message_id, timeout_sec)
104 reply.get('colab_msg_id') == message_id):
105 if 'error' in reply:
--> 106 raise MessageError(reply['error'])
107 return reply.get('data', None)
108
MessageError: TypeError: Failed to fetch
Click here to see the screenshot of my code and the error
Please help me out
Upvotes: 8
Views: 28529
Reputation: 21
After trying chrome cookies, tried except loop, nothing worked for me, so I changed the way that I get my files. I used google drive file stream, it was very easy and efficient:
from google.colab import drive
drive.mount('/content/drive')
it will ask you for authorization code, you can find it after visiting the corresponding url.
with open('/content/drive/My Drive/foo.txt', 'w') as f:
f.write('Hello Google Drive!')
#other instructions
drive.flush_and_unmount()
Upvotes: 2
Reputation: 36
ewwink's cookie solution works.
However, even you set up cookie, that could be another problem if the colab notebook disconnect automatically, because you leave it for a long time. (for example, you run a series of code blocks, and it takes a long time before files.download run)
If that's the case, mount Google Drive(see medchik answer) instead could be a feasible alternative.
Upvotes: 0
Reputation: 371
I encountered the same problem (MessageError: TypeError: Failed to fetch) while using colab.
then, I split file operations into different code units in a colab notebook; I put file open, write, close in one code unit, and use files.download() in the subsequent code unit.
Upvotes: 0
Reputation: 1
It did not worked for me too. One way is to not use the
files.download(filename)
and simply going to the Files section and there will be your file. Right click and download it.
There is a > on the left of google colab editor and click it and there will be Table of Contents, Code Snippets and Files section.
Upvotes: 0
Reputation: 320
The problem is that the file is not finished being written by the time google attempts to "fetch" the file.
Simple solution:
with open('sampleDictionary.json', 'w') as f:
json.dump(dict, f)
time.sleep(10)
files.download('sampleDictionary.json')
More complicated solution could be put a for loop with a try catch statement for files.download, and then put a sleep in the catch. Keep a max loop time in case the file is never completed.
Upvotes: 2
Reputation: 61
I encountered the same problem (MessageError: TypeError: Failed to fetch) while using colab.
then, I split file operations into different code units in a colab notebook; I put file open, write, close in one code unit, and use files.download() in the subsequent code unit.
the problem is gone!
Upvotes: 6
Reputation: 19164
you need to enable third-party cookies
but for now it only works for Chrome browser, open
chrome://settings/content/cookies
make sure the option for Block third-party cookies
is disabled and click add
button in Allow
section then add
colab.research.google.com
Upvotes: 21