Google Colab:如何从我的谷歌驱动器中读取数据?

新手上路,请多包涵

问题很简单:我在 gDrive 上有一些数据,例如 /projects/my_project/my_data*

我还在 gColab 中有一个简单的笔记本。

所以,我想做类似的事情:

 for file in glob.glob("/projects/my_project/my_data*"):
    do_something(file)

不幸的是,所有示例(例如 - https://colab.research.google.com/notebook#fileId=/v2/external/notebooks/io.ipynb )都建议仅主要将所有必要的数据加载到笔记本中。

但是,如果我有很多数据,它可能会非常复杂。有没有机会解决这个问题?

感谢帮助!

原文由 Scitator 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

好消息, PyDrive 在 CoLab 上有一流的支持! PyDrive 是 Google Drive python 客户端的包装器。这是一个关于如何从文件夹下载 所有 文件的示例,类似于使用 glob + *

 !pip install -U -q PyDrive
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# 1. Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# choose a local (colab) directory to store the data.
local_download_path = os.path.expanduser('~/data')
try:
  os.makedirs(local_download_path)
except: pass

# 2. Auto-iterate using the query syntax
#    https://developers.google.com/drive/v2/web/search-parameters
file_list = drive.ListFile(
    {'q': "'1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk' in parents"}).GetList()

for f in file_list:
  # 3. Create & download by id.
  print('title: %s, id: %s' % (f['title'], f['id']))
  fname = os.path.join(local_download_path, f['title'])
  print('downloading to {}'.format(fname))
  f_ = drive.CreateFile({'id': f['id']})
  f_.GetContentFile(fname)

with open(fname, 'r') as f:
  print(f.read())

请注意, drive.ListFile 的参数是与 Google Drive HTTP API 使用的参数一致的字典(您可以自定义 q 参数以适应您的用例)。

知道在所有情况下,文件/文件夹都由 Google Drive 上的 id 编码(窥视 1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk )。这要求您在 Google 云端硬盘中搜索与您要在其中进行搜索的文件夹相对应的特定 ID。

例如,导航到位于您的 Google Drive 中的文件夹 "/projects/my_project/my_data"

谷歌云端硬盘

看到它包含一些文件,我们要在其中下载到 CoLab。要获取文件夹的 id 以便 PyDrive 使用它,请查看 url 并提取 id 参数。在这种情况下,与文件夹对应的 url 是:

https://drive.google.com/drive/folders/1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk

其中 id 是 url 的最后一段: 1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk

原文由 wenkesj 发布,翻译遵循 CC BY-SA 3.0 许可协议

编辑:截至 2020 年 2 月,现在有一个用于自动安装 Drive 的一流 UI。

首先,打开左侧的文件浏览器。它将显示一个“安装驱动器”按钮。单击后,您将看到安装 Drive 的权限提示,之后当您返回到笔记本时,您的 Drive 文件将在没有设置的情况下出现。完成的流程如下所示:

驱动器自动挂载示例

原始答案如下。 (这仍然适用于共享笔记本。)

您可以通过运行以下代码片段来装载您的 Google 云端硬盘文件:

 from google.colab import drive
drive.mount('/content/drive')

然后,您可以在文件浏览器侧面板中或使用命令行实用程序与您的云端硬盘文件进行交互。

这是一个示例笔记本

原文由 Bob Smith 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题