Доступ к "поделился со мной" с 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".
Вопросы:
- если нет прямого способа сделать это, есть ли хотя бы обходной путь?
- люди, с которыми я делюсь своим кодом, тоже получают доступ к моему диску?
Спасибо за все советы. (Также, пожалуйста, укажите, почему вы проголосовали в случае, если я хотел бы научиться не повторять ту же ошибку.)
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, вам необходимо:
Перейдите в раздел Доступные мне на Google Диске.
Выберите папку или файл, к которому вы хотите получить доступ.
щелкните правой кнопкой мыши и выберите «Добавить ярлык на диск » .
Появится всплывающее окно. Выберите MyDrive , затем нажмите « Добавить ярлык».
Теперь перейдите в свой блокнот Google Colab и подключитесь к Google Диску с помощью:
с диска импорта google.colab
drive.mount("/content/gdrive")
Предположим, вы хотите получить доступ к папке с именем « Набор данных ».
dataset_dir = '/content/gdrive/Мой диск/Набор данных'
Теперь вы готовы получить доступ и работать с этой папкой.
Нашел решение для доступа к содержимому общего каталога с вами
Перейдите в раздел "Поделиться со мной" со своего диска Google.
Найдите каталог, щелкните правой кнопкой мыши, добавьте ярлык, затем укажите путь, чтобы сохранить ярлык
смонтировать привод
from google.colab import drive
drive.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
~ Реда