如何从 colab notebook 访问“与我共享”驱动器中的文件夹

问题描述 投票:0回答:1

我有一个需要访问 .csv 数据文件的 Jupyter 笔记本。我打算让我组中的其他人可以访问这些,我希望它也可以直接为他们工作,而无需更改目录,或手动导入数据,甚至“在驱动器中保存快捷方式”。

目前这两个文件(.ipynb 和 .csv)都在我驱动器上的同一个文件夹中,但是当我共享该文件夹时,其他人无法访问数据文件(

pwd
设置为
/content
,即使安装了驱动器,我也无法访问“与我共享的文件夹”。

是否有允许直接使用 .csv 文件的解决方法?理想情况下,我只有一个单元格可以将 csv 从驱动器复制到内容文件夹,但我不知道如何访问它:

!cp $where_is_the_folder? data.csv /content

其他人不需要做任何事情来运行笔记本是非常重要的。

我也尝试了建议使用 PyDrive 和 auth 在这里但它似乎不起作用。

目前这是完整的代码,但显然它只适用于我的驱动器,不适用于我与之共享的其他人:

import pandas as pd
from google.colab import drive
drive.mount('/content/drive')
!cp /content/drive/MyDrive/project_folder/data.csv /content
dataFrame = pd.read_csv('/content/data.csv')

注意notebook和data.csv在同一个目录下(

/content/drive/MyDrive/project_folder
)

python jupyter-notebook google-drive-api google-colaboratory
1个回答
0
投票

您链接的帖子中提到了这一点,但 Google Drive 的结构与常规文件系统不同。您的主“我的云端硬盘”文件夹确实与传统文件夹一样,但没有“与我共享文件夹”这样的东西。 “与我共享”仅向您显示您有权访问的所有文件,但它们属于其各自所有者的驱动器,您无法在 Colab 中加载这些文件。从您的角度来看,这些就像“浮动文件”,您只能直接访问,而不能从文件系统访问。

我认为您无法避免必须创建快捷方式,但是使用 PyDrive 您可以为您的用户自动执行此操作,这样他们就不必手动执行。这是一个例子:

from google.colab import drive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

source_id = '<ID of your folder or file>'

#Searches first to make sure the shortcut doesn't exist already
flist = drive.ListFile({'q':f'shortcutDetails.targetId="{source_id}" and trashed=false'}).GetList()

if (not flist):
#Create shortcut if file doesn't exist
  shortcut = drive.CreateFile({'mimeType':'application/vnd.google-apps.shortcut', 
                             'shortcutDetails':{
                                 'targetId': source_id
                                 }
                             }).Upload()
else:
  #Do something else

#Shortcut gets created under /content/drive/My Drive/

快捷方式默认创建在主“我的驱动器”文件夹下。它本质上用作 symlink,您可以将其视为文件夹结构的一部分。这只是一个示例,但它应该可以帮助您开始。

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.