从Google Colab中的驱动器读取文件

时间:2018-12-04 18:19:27

标签: google-drive-api google-colaboratory

我已阅读notebook有关如何打开驱动器的信息。我已经按照指示使用了:

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

此后,我可以使用!ls列出驱动器的内容,但是无法读取或打开任何文件。我已经尝试过:

with open("/content/drive/My Drive/filename.ext", "r") as file:

file = open("/content/drive/My Drive/filename.ext", "r")

!cp "/content/drive/My Drive/filename.ext" "filename.ext"

还有

import pandas as pd

file = pd.read_csv("/content/drive/My Drive/filename.ext")

但以上方法均无效。我总是得到“不支持操作”或“无法打开文件进行读取”。 我已经看到一些建议使用PyDrive。但这是通过将文件从Google云端硬盘复制到Google云端硬盘来完成的。我不明白为什么您必须来回复制文件,因为我需要遍历文件夹中的所有文件。 Google Colab为什么不能只读取驱动器上存储的文件?还是我做错了什么?另一件事是,我上传了一堆csv文件,但Google驱动器将它们列为“ .csv.gsheet”(使用glob)。这可能是问题吗?我没有其他想法。

6 个答案:

答案 0 :(得分:3)

这很简单!

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

在复制粘贴令牌后,这将要求打开一个URL,该URL将授权安装。

如果您甚至现在都无法读取文件,请使用以下文件名 前缀 :'drive/My Drive',您就可以了。

例如:file = 'drive/My Drive/data/file.txt'

data是我的Google云端硬盘中包含file.txt文件的目录。

答案 1 :(得分:1)

我只是按照您的描述尝试安装和创建Drive文件,但无法重现您描述的错误。

https://colab.research.google.com/drive/17iiKJPQOPv1eW5-Ctf707mPHXDtipE5G

也许尝试使用“运行时->重置所有运行时”菜单来重置后端。或者,您可以共享一个说明问题的笔记本吗?

答案 2 :(得分:1)

昨晚我遇到了类似的问题。正如一些以前的响应者所发布的那样,有一些担忧会影响您读取文件的能力。这些问题是,一方面,确保您的文件可以通过Collab笔记本通过Google驱动器访问;另一方面,确保您的文件格式正确。

我将解释这些步骤并提供一个屏幕截图。

  1. 打开Goog​​le Collab。打开文件浏览器。
  2. 单击悬停时显示“安装驱动器”的图标。这会在笔记本中插入一个新单元格,其代码如下:
from google.colab import drive
drive.mount('/content/drive')

运行单元。系统将提示您接受许可并获得用于安装驱动器的令牌。授予权限,然后将代码复制并粘贴到文本输入中。按Enter键。

  1. 驱动器现在显示在文件浏览器中。右键单击文件夹/ drive /我的驱动器或单击三点操作菜单,然后选择上载。
  2. 在磁盘上找到文件并上传。
  3. 文件出现在文件浏览器中。右键单击“文件”(或使用三点操作菜单),然后选择“复制路径”。
  4. 将该文件路径粘贴到您的pd.read_csv()调用中。
  5. 通过pd.read_csv函数调用运行单元格。
  6. 您现在应该将文件上传到Google云端硬盘中。可访问google collab和保留的文件格式,因为其他任何程序都无法访问它来修改格式。

下面是没有“权限”选项卡的示例,因为我之前已授予权限。 enter image description here

答案 3 :(得分:0)

即使您上传“ .csv”文件名,您仍然看到“ .csv.gsheet”文件名,这使我认为您正在将CSV上传到sheets.google.com,而不是drive.google.com。您可以确认上传到drive.google.com可以正常工作吗?

答案 4 :(得分:0)

根据鲍勃·史密斯(Bob Smith)和阿米·F(Ami F)的回答,我(部分)发现了发生了什么。
我相信Google驱动器会阻止对转换为驱动器格式(gsheet,gdoc等)的文件的读取访问。因此,每当我尝试使用!catopen时,都会出现“不支持操作”错误。当我尝试鲍勃的示例时,创建一个文件然后读取它,该文件就可以在我的笔记本上使用了。
因此,我设法prevent google from converting files,删除了旧文件并上传了所有内容以再次驱动。现在,我所有的csv都保持不变(没有.gsheet扩展),我可以使用open来访问它们。

答案 5 :(得分:0)

我确实怀疑 RenatoSz 的回答是正确的:我可以很好地打开 XLSX 文件,但即使只是 file = open('name_of_file.gsheet') 也会因 Operation not supported 错误而失败。令人烦恼的是,您无法在 Google Colab 中执行打开 Google 表格这样的简单操作 - 这似乎是基本功能。

我的解决方法是:

from google.colab import auth
auth.authenticate_user()
import gspread
from oauth2client.client import GoogleCredentials

# authorise
gc = gspread.authorize(GoogleCredentials.get_application_default())
# open
gsheets = gc.open_by_url('some_fun_URL')
# read
sheets = gsheets.worksheet('List of all experts').get_all_values()
# parse
df = pd.DataFrame(sheets[1:], columns=sheets[0])

请注意,gc.open(...) 对我不起作用