有没有一种方法可以使用Google Colab从一个驱动器访问数据?

时间:2019-04-17 14:29:50

标签: onedrive google-colaboratory

我已经开始使用Google colab训练神经网络,但是我拥有的数据非常大(4GB和18GB)。我目前将所有这些数据存储在一个驱动器中,但我的Google驱动器上没有足够的空间来传输这些文件。

我是否可以直接从google colab中的一个驱动器访问数据?

我曾尝试直接从自己的计算机上加载数据,但是我觉得此过程非常耗时,并且我的计算机确实没有足够的空间来存储这些文件。我还尝试在?之后添加download = 1。在文件的超链接中,但是不会下载,仅显示超链接。使用wget时会产生“错误403:禁止使用”。消息。

我希望google colab文件下载此压缩文件并从其中解压缩数据,以便进行培训。

3 个答案:

答案 0 :(得分:4)

好的,这是下载到colab的方法,在onedrive中选择文件并右键单击下载按钮但立即暂停

enter image description here

然后进入下载界面,在暂停的项目上右键,复制链接地址 enter image description here

!wget --no-check-certificate \
https://public.sn.files.1drv.com/xxx\ 
-O /content/filename.zip

注意:几分钟后会失效

答案 1 :(得分:2)

您可以使用OneDriveSDK(可从PyPi索引中下载)。

首先,我们将使用:

将其安装在Google Colab中
!pip install onedrivesdk

此过程太长,无法在此处容纳。您需要先进行身份验证,然后才能轻松上传/下载文件。

您可以使用以下代码进行身份验证:

import onedrivesdk 

redirect_uri = 'http://localhost:8080/' client_secret = 'your_client_secret' client_id='your_client_id' api_base_url='https://api.onedrive.com/v1.0/' 
scopes=['wl.signin', 'wl.offline_access', 'onedrive.readwrite'] 
http_provider = onedrivesdk.HttpProvider() 
auth_provider = onedrivesdk.AuthProvider( http_provider=http_provider, client_id=client_id, scopes=scopes) 
client = onedrivesdk.OneDriveClient(api_base_url, auth_provider, http_provider) 
auth_url = client.auth_provider.get_auth_url(redirect_uri) 

# Ask for the code 
print('Paste this URL into your browser, approve the app\'s access.') 
print('Copy everything in the address bar after "code=", and paste it below.') print(auth_url) 
code = input('Paste code here: ')  client.auth_provider.authenticate(code, redirect_uri, client_secret)

这将产生一个代码,您需要将该代码粘贴到浏览器中,然后再次粘贴到控制台中以对自己进行身份验证。

您可以使用:

下载文件
root_folder = client.item(drive='me', id='root').children.get() 
id_of_file = root_folder[0].id client.item(drive='me', id=id_of_file).download('./path_to_file')

答案 2 :(得分:1)

仅用于下载,要下载文件夹:

  • cliget在Firefox中(wget对我不起作用,但是curl很好)
  • curlwget在Chrome中(抱歉,还没有尝试过,我没有使用Chrome)

使用cliget,您只需要在firefox中安装插件,而不是开始下载文件夹。 (不必完成操作。)然后在附加组件的图标上,单击cliget,然后选择curl,然后复制(粘贴)创建的命令。

注意:这些不是“安全”方法,可能不应与敏感内容一起使用

(其他OneDrive文件夹可能仍然安全,但是我不确定。请确认。)

要解压缩,可以使用unzip命令。

问题提出以来已经过去了一年,但我把这个留给其他人。 :)

编辑:

由于某些原因,对于许多小文件来说,它似乎真的很慢。 (我不确定为什么。)另外(对于OneDrive),似乎只有几个(2-3)GB才可靠...:(