我用Google colab制作了一个字典,将其转储为json文件,然后通过以下代码将该文件下载到我的笔记本电脑中:
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()
当我尝试运行此代码时,出现此错误:
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
请帮帮我
答案 0 :(得分:3)
您需要启用third-party cookies
,但目前仅适用于Chrome浏览器,请打开
chrome://settings/content/cookies
确保已禁用Block third-party cookies
的选项,然后单击add
部分中的Allow
按钮,然后添加
colab.research.google.com
答案 1 :(得分:1)
问题在于,当Google尝试“提取”文件时,文件还没有写完。
简单的解决方案:
with open('sampleDictionary.json', 'w') as f:
json.dump(dict, f)
time.sleep(10)
files.download('sampleDictionary.json')
更复杂的解决方案可以通过在try语句中添加用于files.download的try catch语句来实现for循环,然后使catch处于休眠状态。保持最长循环时间,以防文件从未完成。
答案 2 :(得分:0)
在使用colab时,我遇到了相同的问题(MessageError:TypeError:无法提取)。
然后,我在colab笔记本中将文件操作拆分为不同的代码单元; 我以一个代码单元打开,写入,关闭文件, 并在后续代码单元中使用files.download()。
问题解决了!
答案 3 :(得分:0)
它对我也没有用。一种方法是不使用
files.download(文件名)
,只需转到“文件”部分,就会有您的文件。右键单击并下载。
在Google colab编辑器的左侧有一个>,然后单击它,将出现目录,代码段和文件部分。
答案 4 :(得分:0)
尝试了chrome cookie之后,尝试了除循环之外的内容,但对我来说却无济于事,所以我更改了获取文件的方式。 我使用了Google驱动器文件流,它非常简单有效:
from google.colab import drive
drive.mount('/content/drive')
它会询问您授权码,您可以在访问相应的URL后找到它。
with open('/content/drive/My Drive/foo.txt', 'w') as f:
f.write('Hello Google Drive!')
#other instructions
f.close()
drive.flush_and_unmount()
答案 5 :(得分:0)
在使用colab时,我遇到了相同的问题(MessageError:TypeError:无法提取)。
然后,我在colab笔记本中将文件操作拆分为不同的代码单元; 我以一个代码单元打开,写入,关闭文件, 并在随后的代码单元中使用files.download()。
答案 6 :(得分:0)
但是,即使您设置了cookie,但是如果colab笔记本自动断开连接,那也可能是另一个问题,因为您放置了很长时间。 (例如,您运行了一系列代码块,files.download运行需要很长时间)
在这种情况下,可以挂载Google云端硬盘(请参阅medchik答案)。