Google Colab文件下载未能获取错误

时间:2018-12-02 14:06:55

标签: python python-3.x jupyter-notebook google-colaboratory

我用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

请帮帮我

7 个答案:

答案 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)

ewwink's cookie solution有效。

但是,即使您设置了cookie,但是如果colab笔记本自动断开连接,那也可能是另一个问题,因为您放置了很长时间。 (例如,您运行了一系列代码块,files.download运行需要很长时间)

在这种情况下,可以挂载Google云端硬盘(请参阅medchik答案)。