Доступ к "поделился со мной" с Colab

Я хочу получить доступ к файлам в каталоге Google Shared "Shared with me".

В записной книжке Colab Python следующие команды:

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

работать хорошо для каталога "Мой диск", однако

ls "/content/drive/My Drive"

не удается с

FileNotFoundError: [Errno 2] Нет такого файла или каталога:

Мне известно о том, что я могу добавить папку на свой диск вручную и продолжить ( как упоминалось здесь), но я хотел бы иметь прямой доступ к общим папкам, например, мне может потребоваться автоматизировать работу с файлами, которые делятся со мной в режиме реального времени.

Я также знаю, что такая же / похожая проблема существует с другими облачными платформами, такими как "OneDrive".

Вопросы:

  1. если нет прямого способа сделать это, есть ли хотя бы обходной путь?
  2. люди, с которыми я делюсь своим кодом, тоже получают доступ к моему диску?

Спасибо за все советы. (Также, пожалуйста, укажите, почему вы проголосовали в случае, если я хотел бы научиться не повторять ту же ошибку.)

16 ответов

Другой способ - перейти на Google Диск, щелкнуть правой кнопкой мыши нужную папку и выбрать "Добавить ярлык на Диск". Это позволит вам получить доступ к папке с вашего диска!

RE: Есть ли обходной путь -

Загрузите ваши общие файлы в веб-интерфейс, щелкните правой кнопкой мыши по интересующему каталогу и выберите "Добавить на мой диск". Затем папка появится в /content/drive/My Drive как вы надеетесь.

Для контекста, Drive не похож на обычную файловую систему: файлы и каталоги могут иметь несколько родителей, тем самым появляясь как в вашем списке файлов, так и у первоначальных владельцев.

RE: Будут ли другие пользователи иметь доступ к файлам диска? -

Нет, ноутбук - это отдельный объект на диске с различными правами доступа к диску.

Я решил, добавив главную / верхнюю папку в качестве ярлыка на свой диск, а затем я использовал код, подобный вашему

Мое дело:

Я хотел загрузить файл csv из папки, которая находилась в папке, к которой мне предоставили общий доступ, поэтому в моем gdrive будет указано "Доступные мне /folder_0/folder_1/file.csv"

Итак, я зашел в папку folder_0 и щелкнул правой кнопкой мыши "Добавить ярлык на диск" -> "Мой диск" -> "ДОБАВИТЬ БЫСТРЫЙ КАРТОЧК". Теперь вся папка_0 должна быть добавлена ​​на ваш диск в виде ярлыка.

Наконец, в колабе 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, загруженный в pandas, но здесь важен путь "/content/drive/My Drive/folder_0/folder_1/file.csv", где "/content/drive/My Drive/" всегда так и "folder_0/folder_1/file.csv" это часть, которая должна быть равна только что добавленному сокращенному пути

Вы можете создать ярлык из файлов «Поделиться со мной» на свой диск, это работает для меня

Чтобы получить доступ к общей с вами папке или файлу в Google Colab, вам необходимо:

  1. Перейдите в раздел Доступные мне на Google Диске.

  2. Выберите папку или файл, к которому вы хотите получить доступ.

  3. щелкните правой кнопкой мыши и выберите «Добавить ярлык на диск » .

  4. Появится всплывающее окно. Выберите MyDrive , затем нажмите « Добавить ярлык».

  5. Теперь перейдите в свой блокнот Google Colab и подключитесь к Google Диску с помощью:

    с диска импорта google.colab

    drive.mount("/content/gdrive")

  6. Предположим, вы хотите получить доступ к папке с именем « Набор данных ».

    dataset_dir = '/content/gdrive/Мой диск/Набор данных'

  7. Теперь вы готовы получить доступ и работать с этой папкой.

Нашел решение для доступа к содержимому общего каталога с вами

  1. Перейдите в раздел "Поделиться со мной" со своего диска Google.

  2. Найдите каталог, щелкните правой кнопкой мыши, добавьте ярлык, затем укажите путь, чтобы сохранить ярлык

  3. смонтировать привод

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

    import os

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

И перейдите в место, где вы указали ярлык, и введите

ls

вы можете увидеть ярлык и получить к нему доступ через cd <directory>

Могут ли люди, которым я предоставил свой код, также доступ к моему диску?

Нет, они могут получить доступ только к тому, чем вы с ними поделились (например, к записной книжке, над которой вы работаете). подробнее о разрешениях здесь:

Если вы хотите распечатать файлы из общего каталога на свой диск, я сделал следующее:

  • смонтировал привод, как описано выше
  • создал ярлык или мягкую ссылку на общую папку в моем собственном каталоге
  • тогда, если вы "ls" ваш диск, вы должны увидеть что-то вроде этого

"Новый ярлык" -> /gdrive/.shortcut-targets-by-id/dffdffxxxxxxxxxx/[shared folder]

  • Я создал новый локальный каталог, в котором мне нужен весь контент
  • Я "cd" в этот каталог
  • Я скопировал содержимое общей папки в свой локальный вновь созданный каталог.

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

Это сработало отлично.

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

Теперь один и тот же код будет работать для всей команды (владелец должен поделиться SHAREDFOLDER с командой)

Я думаю это опечатка

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

должно быть правильно.

ты пропустил 'g'

Это хак, который у меня отлично сработал. Мне пришлось загрузить файл векторов перчаток, который был предоставлен мне и находился в папке «Доступные мне» на моем диске Google.

Щелкните файл правой кнопкой мыши -> выберите «Добавить ярлык на диск» -> выберите любое место на «Диске» / «Мой диск».

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

Приведенный выше фрагмент кода смонтирует ваш gdrive в записную книжку colab. Нажмите на подключенные папки, чтобы узнать свой файл -> щелкните правой кнопкой мыши -> скопировать путь

Теперь вы можете читать любой файл, используя только что скопированный путь!

Другой обходной путь: щелкните папку, которую хотите добавить на мой диск. Затем Shift+z и выберите, куда добавить папку. Больше информации здесь

Одним из решений является следующий подход к импорту общих файлов с 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")

если вам нужно, чтобы все участники имели доступ к этому файлу, я рекомендую всем им создать папку (названную чем-то вроде «ярлыки») и сделать следующее:

1- найдите «путь», к которому вам предоставлен общий доступ 2 - щелкните правой кнопкой мыши файл / папку в «пути» и выберите «Добавить ярлык на диск» 3 - в «MyDrive» выберите папку «Ярлыки» и нажмите «Добавить» Ярлык '4 - наконец, с этими строками кода все участники могут получать доступ и монтировать одни и те же данные, которыми они совместно пользуются.

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

data_path = '/content/drive/MyDrive/shortcuts/FileOrFolderName'

вы можете использовать data_path где угодно в своем коде

Чтобы получить доступ к общему файлу из colab, вы можете создать ярлык для файла в папке MyDrive, переместив его в папку. Затем вы можете получить к нему доступ по пути: /content/drive/MyDrive/filename

#Шаг 1:

Установите диск Google в блокнот Colab.

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

#Шаг 2:

изменить каталог на свой диск

      os.chdir("/content/drive/MyDrive/")

#Шаг 3:

Создайте новый каталог, в котором должны храниться ваши файлы.

      !mkdir copyithere

#Шаг 4:

Вернитесь в общую папку и сделайте ярлык для текущей папки «скопировать туда».

#Шаг 5:

переименуйте ярлык в имя, которое не включает пробел

      !mv "your shortcut name" targettobecopied

#Шаг 6:

Перейдите в переименованный ярлык «targettobecopied».

      os.chdir("/content/drive/MyDrive/copyithere/targettobecopied")

#Шаг 7:

Теперь копирование с ярлыка на ваш фактический диск Google

      %%time 
!yes | cp -R -u -p -r -n * /content/drive/MyDrive/copyithere

~ Реда