提问人:Leo 提问时间:6/22/2019 最后编辑:Leo 更新时间:7/9/2022 访问量:10864
在 Colab 中访问公共 Google 云端硬盘文件夹(不是从我的云端硬盘)?
Access public Google drive folder (not from my drive) in Colab?
问:
我有一个 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只是“共享”
编辑代码仍然不起作用
然后运行代码:
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 评论之后,我确保每个文件/文件夹都是可共享的:
但是,运行编辑 1 中提到的代码: 我收到此错误:
Permission denied: https://drive.google.com/uc?id=1AiNvRugUOWIthoSdBMBB5p5GLpyj6_Vd
Maybe you need to change permission over 'Anyone with the link'?
答:
1). 使用下面给出的代码后,您将获得Google云端硬盘中的目录列表,然后您可以使用要使用的文件夹。
from google.colab import drive
drive.mount('/content/drive')
import os
os.listdir('/content/drive/My Drive')
您的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']]
我刚刚测试过的一个解决方案是将您的文件存储在 Google Drive 以外的公共存储库中,然后用于调用 shell 命令 do 从那里检索文件。下面是用于将文件从公共 Github 存储库下载到 Colab 环境的工作示例代码:!
!wget https://raw.githubusercontent.com/heitorsf/pimpom/master/README.md
因此,您将在 Colab 上获得该文件。您可以使用 来检查它。!cat README.md
注意:执行此操作的最佳方法是使用文件的“原始”版本的 URL。
只需创建一个从公用文件夹到驱动器的快捷方式即可。为此,请右键单击公用文件夹,然后选择创建指向此文件夹的链接的选项。这将创建指向您自己的驱动器中的公用文件夹的链接。然后,您可以按照通常的方式使用 Colab 连接到您自己的 Google 云端硬盘,并像访问驱动器中的任何其他文件夹一样访问该文件夹。
评论