Google Drive 中的文件在 Collab 中作为目录挂载

Posted

技术标签:

【中文标题】Google Drive 中的文件在 Collab 中作为目录挂载【英文标题】:File in Google Drive mounted as Directory in Collab 【发布时间】:2021-09-17 20:31:52 【问题描述】:

我正在尝试访问托管在 Google Colab 笔记本中的 Google Drive 中的 CSV 文件。如the documentation 中所述,我通过Web UI 安装我的个人驱动器。 Drive 内容(几乎)按预期显示在侧边栏中。 但不完全是,因为 CSV 文件在 Google Colab 中显示为一个目录。

此屏幕截图显示了我的 Google 云端硬盘中的 CSV 文件:

我可以从 Google Drive 下载文件,内容如预期的那样是 CSV 文件。

此屏幕截图显示了文件在 Google Colab 文件浏览器中的显示方式,就像一个目录,包括一个子目录 0.0.0

在 Google Colab 内部的文件上运行 ls 时,CSV 文件也被列为目录,包括 0.0.0 子目录:

因此,当我尝试在 Python 中读取文件时,它会抛出 IsADirectoryError

另一件事是,在 Google Drive 的同一目录中还有两个 CSV 文件(如上面的屏幕截图所示)。它们根本不会出现在 Google Colab 中已装载的驱动器中。

在 SO 上有一些关于 IsADirectoryErrors 的问题,但我发现的问题是由于实际目录。在撰写本文时,Google 将我指向 [this questions]7,它显然已被删除。

为什么我的文件在 Google Drive 中显示为普通文件,但在 Google Colab 中显示为目录?子目录0.0.0 来自哪里? 为什么其他两个文件在 Google Colab 中不可见?

【问题讨论】:

在 Google Chrome 和 Firefox 中打开 Colab 也没有区别。 UI 中的挂载按钮似乎不再自动工作。相反,当我单击它时,Colab 会自动添加一个单元格,用于以编程方式安装 Google 驱动器。使用它时,驱动器会按预期安装。 【参考方案1】:

使用 os 库试试这种方式。

from google.colab import drive 
import os
import pandas as pd

安装驱动器

drive.mount('/content/drive')

打印文件名并记下文件索引

path = "/content/drive/MyDrive/data/educational_classifier"
fnames = os.listdir(path)
print(fnames)

输出应该是:['file1.csv', 'file2.csv', 'file3.csv']

使用索引读取文件

df = pd.read_csv(os.path.join(path, fnames[index]))

例如:df = pd.read_csv(os.path.join(path, fnames[3]))

【讨论】:

在 Python 中读取文件的方法似乎无关,但终止运行时并以编程方式(使用drive.mount())而不是通过 Web UI(安装按钮)安装驱动器似乎可以正确安装数据.不确定这是否真的有什么不同,或者是否只是 Google Drive/Colab 集成出现了故障。 @Carsten 听起来像是一个小故障(可能是由于文件过大;不确定),希望您的问题得到解决。

以上是关于Google Drive 中的文件在 Collab 中作为目录挂载的主要内容,如果未能解决你的问题,请参考以下文章

WebDriverException:消息:“msedgedriver.exe”可执行文件可能在 Google Collab 中有错误的权限

替换Google Drive UpdateMediaUpload中的文件

在 android app 中访问 Dropbox、google drive、microsoft onedrive 等中的云共享文件

安装在 Google Colab 中的 Google Drive 中的相对路径

如何从Colab / Jupyter中的共享Google Drive链接获取文件?

获取Google Drive演示文稿文件的链接