我已阅读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)。这可能是问题吗?我没有其他想法。
答案 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驱动器访问;另一方面,确保您的文件格式正确。
我将解释这些步骤并提供一个屏幕截图。
from google.colab import drive
drive.mount('/content/drive')
运行单元。系统将提示您接受许可并获得用于安装驱动器的令牌。授予权限,然后将代码复制并粘贴到文本输入中。按Enter键。
答案 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等)的文件的读取访问。因此,每当我尝试使用!cat
或open
时,都会出现“不支持操作”错误。当我尝试鲍勃的示例时,创建一个文件然后读取它,该文件就可以在我的笔记本上使用了。
因此,我设法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(...)
对我不起作用。