通过Colab访问“与我共享”

时间:2019-01-24 17:00:36

标签: python google-colaboratory shared-directory flysystem-google-drive

我想访问Google云端硬盘“与我共享”目录中的文件。

在Colab python笔记本中,以下命令:

import os
from google.colab import drive
drive.mount('/content/drive')
ls "/content/drive/My Drive"

对于“我的云端硬盘”目录,效果很好

ls "/content/drive/My Drive"

失败

  

FileNotFoundError:[错误2]没有这样的文件或目录:

我知道可以手动将文件夹添加到驱动器并继续(as mentioned in here)的事实,但是我想直接访问共享文件夹,比如说我可能需要自动执行该操作。处理与我实时共享的文件。

我还知道其他云平台(例如“ OneDrive”)存在相同/相似的问题。

问题是:

  1. 如果没有直接的方法,是否至少有一个 解决方法?
  2. 与我共享代码的人也可以访问我的硬盘吗?

感谢所有提示。 (另外,请提及您为什么投反对票,以防万一,我想学习不要再犯同样的错误。)

10 个答案:

答案 0 :(得分:9)

另一种解决方法是转到Google云端硬盘,右键单击有问题的文件夹,然后单击“向云端硬盘添加快捷方式”。这将允许您从驱动器访问该文件夹!

答案 1 :(得分:3)

找到了一种与您访问共享目录内容的解决方案

  1. 从您的Google云端硬盘与我共享。

  2. 找到目录,右键单击添加快捷方式,然后指定路径以保存快捷方式

  3. 安装驱动器

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

    import os

    os.chdir("/content/drive/My Drive")

并转到您指定的快捷方式位置,然后键入

ls

您可以看到快捷方式并通过cd <directory>

对其进行访问

答案 2 :(得分:2)

  

与我共享代码的人也可以访问我的驱动器吗?

否,他们只能访问您与他们共享的内容(例如,您正在使用的笔记本)。 more info on permissions here:

答案 3 :(得分:2)

我通过将main / top文件夹添加为驱动器的快捷方式来解决此问题,然后使用了类似您的代码

我的情况:

我想从与我共享的文件夹中的文件夹中加载一个csv文件,因此在我的gdrive中,它位于“与我共享/folder_0/folder_1/file.csv” < / p>

所以我转到文件夹_0的右下角,单击“向驱动器添加快捷方式”->“我的驱动器”->“添加快捷方式” 。现在,应该将整个folder_0作为快捷方式添加到驱动器中。

最后在colab nb中:

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

pandas.read_csv("/content/drive/My Drive/folder_0/folder_1/file.csv")

在我的情况下,一个csv文件已加载到熊猫中,但是这里重要的是路径"/content/drive/My Drive/folder_0/folder_1/file.csv",其中"/content/drive/My Drive/"总是这样,"folder_0/folder_1/file.csv"是必须相等的部分到您刚刚添加的快捷方式路径

答案 4 :(得分:1)

如果您要将文件从共享目录硬拷贝到自己的云端硬盘,请按以下步骤操作:

  • 如上所述安装驱动器
  • 在我自己的目录中创建共享文件夹的快捷方式或软链接
  • 然后,如果您“ ls”驱动器,应该会看到类似的内容

“新快捷方式”-> /gdrive/.shortcut-targets-by-id/dffdffxxxxxxxxxx/[shared folder]

  • 我创建了一个想要所有内容的新本地目录
  • 我“ cd”到该目录
  • 我将共享文件夹的内容复制到了本地新创建的目录中

    cp -rp '/gdrive/.shortcut-targets-by-id/dffdffxxxxxxxxxx/[shared folder]/*

效果很好。

答案 5 :(得分:1)

import os
from google.colab import drive
drive.mount('/content/drive',force_remount=True)
os.chdir("/content/drive/.shortcut-targets-byid/10xasdbasbdiluabsdiubiuadWEWEdaq/SHAREDFOLDER")

现在,所有团队都可以使用相同的代码(所有者需要与团队共享SHAREDFOLDER)

答案 6 :(得分:1)

这是一个对我来说很好的黑客。我必须加载与我共享的手套矢量文件,该文件位于我的谷歌驱动器的“与我共享”文件夹中。

右键单击文件 -> 选择将快捷方式添加到云端硬盘 -> 选择云端硬盘/我的云端硬盘中的任意位置。

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

以上代码片段将您的 gdrive 安装在 colab 笔记本中。 点击挂载的文件夹找到你的文件->右键->复制路径

现在,您可以使用刚刚复制的路径读取任何文件!

答案 7 :(得分:0)

RE:是否有解决方法-

在Web UI中加载共享文件,右键单击感兴趣的目录,然后选择“添加到我的云端硬盘”。然后,该文件夹将如您所愿地显示在/content/drive/My Drive中。

就上下文而言,云端硬盘与普通的文件系统不同:文件和目录可以有多个父级,因此会同时出现在文件列表和原始所有者中。

RE:其他用户是否可以访问云端硬盘文件? -

否,笔记本是Drive中具有不同Drive权限的不同对象。

答案 8 :(得分:0)

我认为是错字

import os
from google.colab import drive
drive.mount('/content/gdrive')
!ls "/content/gdrive/My Drive"

应该是对的。

您错过了'g'

答案 9 :(得分:0)

一种解决方法是采用以下方法从Google驱动器导入共享文件。

# Install PyDrive
!pip install PyDrive

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

#Authenticate and create the PyDrive client
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

#Get the Shareable link
#Ex link : https://drive.google.com/file/d/1c7Ffo1Go1dtUpKcSWxdbdVyW4dfhEoUp/view?usp=sharing
# Get the id from the link 1c7Ffo1Go1dtUpKcSWxdbdVyW4dfhEoUp
downloaded = drive.CreateFile({'id':"your_file_ID"})   
downloaded.GetContentFile('your_file_name.csv')       

#Read data
import pandas as pd
df = pd.read_csv("your_file_name.csv")