Доступ к общедоступной папке на Google диске (не с моего диска) в Colab? - PullRequest
1 голос
/ 22 июня 2019

У меня есть общедоступная ссылка для папки 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)

, но мой идентификатор просто «делится»

РЕДАКТИРОВАТЬ КОД ВСЕ ЕЩЕ НЕ РАБОТАЕТ

Я изменил разрешение на совместное использование файлов следующим образом 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: убедившись, что все папки имеют общие активные После Коракот Чаоваванич комментарий, яУбедитесь, что каждый файл / папка доступен для общего доступа:

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'?

Ответы [ 2 ]

1 голос
/ 23 июня 2019

Ваш идентификатор_папки находится между '/' и '?'.Вы можете использовать split дважды или использовать regexp для ее извлечения.

После этого вы можете перечислить все файлы внутри.Вот пример gist .Ключевая часть

'''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']]
0 голосов
/ 22 июня 2019

1). После использования приведенного ниже кода вы получите список каталогов на вашем диске Google, а затем вы можете использовать папку, какую вы хотите использовать.

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

import os
os.listdir('/content/drive/My Drive')
...