Как загрузить набор данных в коллаборацию Google? - PullRequest
0 голосов
/ 25 мая 2018

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

from google.colab import files

uploaded = files.upload()

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 10 августа 2019

Для загрузки данных в Colab у вас есть три метода.

Метод 1

Вы можете напрямую загрузить файл или каталог в Colab UI enter image description here

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

!makedir {dir_name}
!unzip {zip_file} -d {dir_name}

3) Самое главное, что при сбое Colab данные будут удалены.

Метод 2

Выполните код в ячейке Colab:

from google.colab import files
uploaded = files.upload()

В моем эксперименте, когда вы запускаете ячейку, появляется загрузкакнопка.и когда индикатор выполнения ячейки все еще работает, вы выбираете файл.1) После выполнения имя файла появится на панели результатов.2) Обновите файлы Colab, вы увидите файл.3) Или выполните !ls, вы увидите файл.Если нет, файл не был успешно загружен.

Метод 3

Если ваши данные взяты из kaggle, вы можете использовать Kaggle API для загрузки данных в локальный каталог Colab.

Метод 4

Для загрузки данных на Google Drive вы можете использовать 1) Google Drive Web Browser или 2) Drive API (https://developers.google.com/drive/api/v3/quickstart/python). Для доступа к дискуданные, используйте следующий код в Colab.

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

Я бы порекомендовал загружать данные в Google Drive, потому что они постоянны.

0 голосов
/ 25 мая 2018

Вам необходимо скопировать ваш набор данных в Google Drive.Затем получите DATA_FOLDER_ID.Лучший способ сделать это - открыть папку на вашем Google Диске и скопировать последнюю часть html-адреса.Например, идентификатор папки для ссылки:

https://drive.google.com/drive/folders/xxxxxxxxxxxxxxxxxxxxxxxx равен xxxxxxxxxxxxxxxxxxxxxxxx

Затем вы можете создавать локальные папки и рекурсивно загружать каждый файл.

DATA_FOLDER_ID = 'xxxxxxxxxxxxxxxxxxxxxxxx'
ROOT_PATH = '~/you_path'
!pip install -U -q PyDrive
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# 1. Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# choose a local (colab) directory to store the data.
local_root_path = os.path.expanduser(ROOT_PATH)
try:
  os.makedirs(local_root_path)
except: pass

def ListFolder(google_drive_id, destination):
  file_list = drive.ListFile({'q': "'%s' in parents and trashed=false" % google_drive_id}).GetList()
  counter = 0
  for f in file_list:
    # If it is a directory then, create the dicrectory and upload the file inside it
    if f['mimeType']=='application/vnd.google-apps.folder': 
      folder_path = os.path.join(destination, f['title'])
      os.makedirs(folder_path)
      print('creating directory {}'.format(folder_path))
      ListFolder(f['id'], folder_path)
    else:
      fname = os.path.join(destination, f['title'])
      f_ = drive.CreateFile({'id': f['id']})
      f_.GetContentFile(fname)
      counter += 1
  print('{} files were uploaded in {}'.format(counter, destination))

ListFolder(DATA_FOLDER_ID, local_root_path)
...