在 Colab 中访问公共 Google 云端硬盘文件夹(不是从我的云端硬盘)?

Access public Google drive folder (not from my drive) in Colab?

提问人:Leo 提问时间:6/22/2019 最后编辑:Leo 更新时间:7/9/2022 访问量:10864

问:

我有一个 GoogleDrive 文件夹的公共链接:https://drive.google.com/drive/folders/19RUYQNOzMJEA-IJ3EKKUf0qGyyOepzGk?usp=sharing

我想访问 colab 笔记本中的内容。我希望任何打开笔记本的人都能访问该文件夹,因此无需安装我自己的驱动器。其他答案,如在 Google Drive (Python) 中下载公共文件,似乎建议对 ID 进行切片。 我试着按照说明 https://towardsdatascience.com/3-ways-to-load-csv-files-into-colab-7c14fcbdcb92

link= 'https://drive.google.com/drive/folders/19RUYQNOzMJEA-IJ3EKKUf0qGyyOepzGk?usp=sharing'

fluff, id = link.split('=')
print (id)

但是,我的ID只是“共享”

编辑代码仍然不起作用

我已经更改了文件共享的权限,如下所示changing sharing permission

然后运行代码:

from google.colab import auth

auth.authenticate_user()  # must authenticate


'''list all ids of files directly under folder folder_id'''

def folder_list(folder_id):

  from googleapiclient.discovery import build

  gdrive = build('drive', 'v3').files()

  res = gdrive.list(q="'%s' in parents" % folder_id).execute()

  return [f['id'] for f in res['files']]



'''download all files from a gdrive folder to current directory'''

def folder_download(folder_id):

  for fid in folder_list(folder_id):

    !gdown -q --id $fid

link='https://drive.google.com/drive/folders/1I6FwS5qB2bIwoPE4ueu8ZNH3upBqMB7S?usp=sharing'

folder_id="1I6FwS5qB2bIwoPE4ueu8ZNH3upBqMB7S"

folder_download(folder_id)

但得到这个错误:

Permission denied: https://drive.google.com/uc?id=1AiNvRugUOWIthoSdBMBB5p5GLpyj6_Vd
Maybe you need to change permission over 'Anyone with the link'?

但是,我已将权限更改为“任何拥有链接的人”

编辑 2:确保所有文件夹都具有可共享的活动状态Korakot Chaovavanich 评论之后,我确保每个文件/文件夹都是可共享的:

URL 链接引用以下文件夹:link share 1

里面有这个文件夹:link share 2

它只有一个文件,也可以共享:link share 3

但是,运行编辑 1 中提到的代码: 我收到此错误:

Permission denied: https://drive.google.com/uc?id=1AiNvRugUOWIthoSdBMBB5p5GLpyj6_Vd
Maybe you need to change permission over 'Anyone with the link'?
网址 下载 谷歌合作实验室 驾驶

评论

0赞 korakot 6/23/2019
id = 链接.split('?')[0].split('/')[-1]

答:

-3赞 Rahul charan 6/22/2019 #1

1). 使用下面给出的代码后,您将获得Google云端硬盘中的目录列表,然后您可以使用要使用的文件夹。

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

import os
os.listdir('/content/drive/My Drive')
3赞 korakot 6/23/2019 #2

您的folder_id介于“/”和“?”之间。您可以使用拆分两次或使用正则表达式来提取它。

之后,您可能需要列出其中的所有文件。这是要点示例。关键部分是

'''list all ids of files directly under folder folder_id'''
def folder_list(folder_id):
  from googleapiclient.discovery import build
  gdrive = build('drive', 'v3').files()
  res = gdrive.list(q="'%s' in parents" % folder_id).execute()
  return [f['id'] for f in res['files']]
1赞 heitorsf 11/1/2019 #3

我刚刚测试过的一个解决方案是将您的文件存储在 Google Drive 以外的公共存储库中,然后用于调用 shell 命令 do 从那里检索文件。下面是用于将文件从公共 Github 存储库下载到 Colab 环境的工作示例代码:!

!wget https://raw.githubusercontent.com/heitorsf/pimpom/master/README.md

因此,您将在 Colab 上获得该文件。您可以使用 来检查它。!cat README.md

注意:执行此操作的最佳方法是使用文件的“原始”版本的 URL。

1赞 Kelison Bessa 10/20/2021 #4

只需创建一个从公用文件夹到驱动器的快捷方式即可。为此,请右键单击公用文件夹,然后选择创建指向此文件夹的链接的选项。这将创建指向您自己的驱动器中的公用文件夹的链接。然后,您可以按照通常的方式使用 Colab 连接到您自己的 Google 云端硬盘,并像访问驱动器中的任何其他文件夹一样访问该文件夹。