有没有一种方法可以使用Google Colab访问OneDrive上的数据?

14

我开始使用Google Colab来训练神经网络,但是我的数据很大(4GB和18GB)。我目前将所有这些数据存储在OneDrive中,而我没有足够的空间将这些文件传输到我的Google Drive上。

有没有一种方法可以直接在Google Colab中从OneDrive访问数据?

我已经尝试了直接从自己的计算机加载数据,但我觉得这个过程太耗时了,而且我的计算机真的没有足够的空间来存储这些文件。我还尝试在文件的超链接后面添加 download=1,但这并不会下载文件,只显示超链接。使用wget命令会产生“ERROR 403: Forbidden.”的错误信息。

我希望Google Colab文件可以下载这个压缩文件,并解压其中的数据以进行训练。


我认为这种方法可以节省您很多时间。首先,将所有数据文件放入一个压缩文件(.rar或.zip)。您可以在GitHub上创建一个私有存储库,然后将存档上传到存储库中。在此处,您可以选择查看原始文件。打开该链接。现在,您可以在Google Colab中使用Python打开此URL。并提取所有文件。 - Shubham Panchal
谢谢,但这种方法的问题在于我在GitHub账户上只有1GB的空间,而在OneDrive上我有1TB的空间。我预计将来会使用更多的数据,因此我希望有一个系统可以处理这些数据。这就是为什么从OneDrive直接收集数据非常重要的原因。 - JoshWilde
@JoshWilde,你成功解决了问题并且可以从Colab访问OneDrive了吗? - E.gh
3个回答

5

好的,这里是将方法下载到Colab的步骤:在OneDrive中选择文件并右键单击下载按钮,但立即暂停下载。

输入图像描述

然后进入下载界面,右键点击暂停的项目,并复制链接地址。 输入图像描述

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

注意:它将在几分钟内失效。

3

您可以使用OneDriveSDK,该SDK可在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')

代码无法运行,出现“raw_input不存在”的错误。 - SantoshGupta7
2
安装onedrivesdk时出现错误。 ERROR:命令以状态1退出:python setup.py egg_info,请检查日志以获取完整的命令输出。 - Joe
1
@Joe 尝试运行 !pip install "onedrivesdk<2" i.o. "!pip install onedrivesdk"。更多详情请参见 https://github.com/OneDrive/onedrive-sdk-python/issues/166 - infoshoc
这对我也起作用了,但是通过粘贴代码,我得到了“无法完成您的请求”的提示,甚至无法让应用程序访问我的计算机。 - ablam

1

仅供下载使用,要下载文件夹:

  • 在Firefox中使用cligetwget对我无效,但curl可以)
  • 在Chrome中使用curlwget(抱歉,我没有尝试过,我不使用Chrome)

使用cliget,您只需在Firefox中安装附加组件,然后开始下载文件夹。(不必实际完成。)在附加组件图标处,单击cliget,然后选择curl,并复制(粘贴)创建的命令。

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

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

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

问题已经过去了一年,但我将其留在这里,供其他人参考。 :)

编辑:

对于许多小文件,它似乎非常慢,原因不明。此外(使用OneDrive)它似乎只可靠到几个(2-3)GB... :(


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接