谷歌Colab:如何从我的谷歌硬盘读取数据?

Sci*_*tor 62 python google-colaboratory

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

另外我在gColab中有一个简单的笔记本.

所以,我想做的事情如下:

for file in glob.glob("/projects/my_project/my_data*"):
    do_something(file)
Run Code Online (Sandbox Code Playgroud)

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

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

感谢帮助!

Bob*_*ith 146

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

from google.colab import drive
drive.mount('/content/drive')
Run Code Online (Sandbox Code Playgroud)

然后,您可以在文件浏览器侧面板中使用命令行实用程序与Drive文件进行交互.

这是一个示例笔记本

  • 它是将你的gdrive安装到谷歌colab的最直接的解决方案,我认为它应该是公认的答案 (18认同)
  • 注意:在文件浏览器中使用“安装驱动器”按钮时,对于仅由当前用户编辑过的笔记本,不需要身份验证代码。 (3认同)

wen*_*esj 42

好消息,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())
Run Code Online (Sandbox Code Playgroud)

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

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

例如,导航到"/projects/my_project/my_data"位于Google云端硬盘中的文件夹.

Google云端硬盘

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

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

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


eem*_*ilk 23

我所做的首先是:

from google.colab import drive
drive.mount('/content/drive/')
Run Code Online (Sandbox Code Playgroud)

然后

%cd /content/drive/My Drive/Colab Notebooks/
Run Code Online (Sandbox Code Playgroud)

例如,在我可以读取 csv 文件之后

df = pd.read_csv("data_example.csv")
Run Code Online (Sandbox Code Playgroud)

如果您有不同的文件位置,只需在“我的驱动器”后添加正确的路径


H-S*_*San 17

感谢您的精彩回答!从Google云端硬盘将一些一次性文件传输到Colab的最快方法:加载云端硬盘助手并挂载

from google.colab import drive
Run Code Online (Sandbox Code Playgroud)

这将提示您进行授权。

drive.mount('/content/drive')
Run Code Online (Sandbox Code Playgroud)

在新标签页中打开链接->您将获得一个代码-将其复制回提示符,您现在可以访问Google驱动器检查:

!ls "/content/drive/My Drive"
Run Code Online (Sandbox Code Playgroud)

然后根据需要复制文件:

!cp "/content/drive/My Drive/xy.py" "xy.py"
Run Code Online (Sandbox Code Playgroud)

确认文件已复制:

!ls
Run Code Online (Sandbox Code Playgroud)


Sun*_*ugu 15

先前的大多数答案都非常复杂

from google.colab import drive
drive.mount("/content/drive", force_remount=True)
Run Code Online (Sandbox Code Playgroud)

我认为这是将google驱动器安装到CO Lab的最简单,最快的方法,您mount directory location只需更改的参数即可将其更改为所需的格式drive.mount。它会为您提供一个链接,以接受您帐户的权限,然后您必须复制粘贴生成的密钥,然后将驱动器安装在所选路径中。

force_remount 仅在必须安装驱动器时才使用,而不论先前是否加载了驱动器。如果不想强制安装,可以忽略when参数。

编辑:查看此内容以找到IO在colab https://colab.research.google.com/notebooks/io.ipynb中进行操作的更多方法


Him*_*dar 11

您不能在colab上永久存储文件。尽管您可以从驱动器中导入文件,并且每次使用完文件后都可以将其保存回去。

要将Google驱动器安装到您的Colab会话中

from google.colab import drive
drive.mount('/content/gdrive')
Run Code Online (Sandbox Code Playgroud)

您可以像写入本地文件系统一样简单地写入google驱动器。现在,如果您看到google驱动器将被加载到“文件”标签中。现在,您可以从colab中访问任何文件,您可以对其进行写入和读取。更改将在驱动器上实时完成,任何具有访问文件链接的人都可以从colab中查看您所做的更改。

with open('/content/gdrive/My Drive/filename.txt', 'w') as f:
   f.write('values')
Run Code Online (Sandbox Code Playgroud)


Fer*_*ann 5

我很懒,记性不好,所以我决定创建 更容易记忆和输入的easycolab

import easycolab as ec
ec.mount()
Run Code Online (Sandbox Code Playgroud)

确保先安装它: !pip install easycolab

mount()方法基本上实现了这一点:

from google.colab import drive
drive.mount(‘/content/drive’)
cd ‘/content/gdrive/My Drive/’
Run Code Online (Sandbox Code Playgroud)


Ang*_*des 5

读取文件夹中的所有文件:

import glob
from google.colab import drive
drive.mount('/gdrive', force_remount=True)

#!ls "/gdrive/My Drive/folder"

files = glob.glob(f"/gdrive/My Drive/folder/*.txt")
for file in files:  
  do_something(file)
Run Code Online (Sandbox Code Playgroud)


Jit*_*tin 5

from google.colab import drive
drive.mount('/content/drive')
Run Code Online (Sandbox Code Playgroud)

这对我来说非常有用,我后来能够使用该os库来访问我的文件,就像我在 PC 上访问它们一样