Управление файлами в Google Colab

Google Colaboratory  —  бесплатная среда Jupyter Notebook, которая выполняется на облачных серверах Google и позволяет использовать аппаратное оборудование бэкенда, например GPU and TPU. В результате вы можете работать со всеми возможностями Jupyter Notebook, не устанавливая его на локальной машине. 

Skillfactory.ru

Colab поставляется (почти) со всеми настройками, позволяющими начать процесс программирования, за исключением датасетов. Как же с помощью Colab получить к ним доступ? 

В данной статье мы рассмотрим:

  • как загружать данные в Colab из разных источников; 
  • как произвести обратную запись из Colab в эти источники данных; 
  • ограничения Google Colab при работе с внешними файлами. 

Операции с директориями и файлами в Google Colab 

Поскольку Colab позволяет делать все, что угодно, в локально размещенном Jupyter Notebook, то появляется возможность работать с командами оболочки, такими как ls, dir, pwd, cd, cat, echo и т.д., с помощью магической команды для строки (%) или bash-команды (!).

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

Просмотр директорий в Colab

Как загружать и скачивать файлы в/из Google Colab 

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

Однако Colab предоставляет разные варианты подключения к практически любому источнику данных. Посмотрим, как это происходит. 

Обращение к GitHub из Google Colab 

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

Клонирование репозитория GitHub 

Клонирование репозитория Github в среду Colab происходит по такому же принципу, как и на локальный компьютер, а именно с помощью git clone. По завершении этой процедуры обновите менеджер файлов для просмотра содержимого. 

И теперь файлы можно читать точно так же, как и на локальном компьютере. 

Клонирование репозитория в Colab 

Скачивание отдельных файлов непосредственно с GitHub 

Если для работы нужно лишь несколько файлов, а не весь репозиторий, то можно обойтись без его клонирования в Colab и скачать эти файлы непосредственно с GitHub.

Для этого: 

  1. Кликните на файл в репозитории. 
  2. Кликните на View Raw. 
  3. Скопируйте URL необработанного файла. 
  4. Используйте этот URL как местоположение файла. 
Чтение файлов, скаченных в Colab 

Обращение к локальной файловой системе через Google Colab  

Читать и записывать файлы из/в локальную файловую систему можно с помощью менеджера или кода Python. 

Обращение к локальным файлам через менеджер файлов 

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

Для загрузки любых файлов из локальной файловой системы в текущую рабочую директорию Colab можно воспользоваться опцией Upload в верхней части панели менеджера файлов.

Для загрузки файлов напрямую в поддиректорию нужно: 

  1. Кликнуть на три точки, появляющиеся при наведении курсора на каталог. 
  2. Выбрать опцию Upload. 
Загрузка файлов из локальной системы в Colab 

3. Выбрать файлы для загрузки из диалогового окна File Upload. 

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

Процесс выполнения загрузки в Colab 

По окончании процесса загрузки читать файлы можно привычным для вас способом. 

Чтение файлов, загруженных в Colab 

Скачивание файлов в локальную файловую систему через менеджер файлов 

Кликните на три точки, появляющиеся при наведении курсора на имя файла и выберите опцию Download. 

Скачивание файлов из Colab в локальную систему 

Обращение к локальной файловой системе посредством кода Python 

Для осуществления этого шага предварительно требуется импортировать модуль files из google.colab library:

from google.colab import files

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

Применяем метод загрузки объекта files:

uploaded = files.upload()

В результате открывается диалоговое окно File Upload: 

Загрузка файлов в Colab программным способом 

Выбираем файлы для загрузки и ждем завершения. Ход ее выполнения отображается: 

Процесс программной загрузки файлов 

Объект uploaded является словарем, где имена файлов и их содержимое хранятся в виде пар “ключ-значение”: 

Структура загружаемого объекта 

По окончании загрузки считать его можно точно так же, как и любой другой файл из Colab:

df4 = pd.read_json("News_Category_Dataset_v2.json", lines=True)

Также есть способ считать его напрямую из директории uploaded, используя библиотеку io

import io
df5 = pd.read_json(io.BytesIO(uploaded['News_Category_Dataset_v2.json']), lines=True)

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

Скачивание файлов из Colab в локальную систему посредством кода Python 

Применение метода download объекта files позволяет скачать любой файл из Colab на локальный диск. Процесс выполнения отображается, и по его завершении можно выбрать на локальном компьютере место для сохранения файла.  

Скачивание файлов из Colab программным способом 

Обращение к Google Диску из Google Colab 

Рассмотрим пошагово, как с помощью модуля drive из google.colab можно смонтировать весь Google Диск в Colab: 

1. Выполняем следующий код с целью получения ссылки для аутентификации: 

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

2. Открываем ссылку. 

3. Выбираем аккаунт Google, диск которого нужно смонтировать. 

4. Разрешаем Google Drive Stream доступ к вашему аккаунту Google. 

5. Копируем отображенный код, вставляем его в текстовое окно, как показано ниже, и нажимаем Enter. 

Монтирование Google Диска в Colab 

По окончании монтирования получаем сообщение “Mounted at /content/gdrive” (”Смонтировано в/содержимое/gdrive”), после чего можно просматривать содержимое диска из панели менеджера файлов. 

Изучение содержимого Google Диска в Colab 

Теперь взаимодействовать с Google Диск можно точно так же, как и с каталогом в среде Colab. Любые изменения, связанные с этим каталогом, будут сразу же отображаться на Google Диске, файлы которого вы можете читать как и любые другие. 

Кроме того, можно даже напрямую делать запись из Colab на Google Диск, применяя обычные операции с файлами/каталогами.

! touch "/content/gdrive/My Drive/sample_file.txt"

Эта команда создаст файл на Google Диске, который отобразится на панели менеджера файлов при ее обновлении: 

Загрузка файла из Colab на Google Диск
Загрузка файла из Colab на Google Диск 

Обращение к Google Таблицам из Google Colab 

Для обращения к Google Таблицам: 

  1. Прежде всего, необходимо аутентифицировать аккаунт для соединения с Colab. С этой целью выполняем следующий код: 
from google.colab import auth
auth.authenticate_user()

2. В результате получаем ссылку для аутентификации и открываем ее. 

3. Выбираем аккаунт Google для соединения. 

4. Разрешаем Google Cloud SDK доступ к вашему аккаунту Google. 

5. Наконец, копируем отображаемый код, вставляем его в текстовое окно и нажимаем Enter. 

Аутентификация Google Cloud SDK

Для взаимодействия с Google Таблицами потребуется импортировать предустановленную библиотеку gspread. Чтобы разрешить ей доступ к вашему аккаунту Google воспользуемся методом GoogleCredentials из предустановленной библиотеки oauth2client.client:

import gspread
from oauth2client.client import GoogleCredentials
 
gc = gspread.authorize(GoogleCredentials.get_application_default())

После выполнения кода в текущей рабочей директории будет создан файл adc.json с учетными данными, которые нужны gspread для получения доступа к вашему аккаунту Google.

Файл adc.json для Google Таблиц 

Теперь создавайте или скачивайте Google таблицы напрямую из среды Colab. 

Создание/обновление Google таблицы в Colab 

  1. Создаем рабочую книгу с помощью метода create объекта gc:
wb = gc.create('demo')

2. Как только она готова, можно ее посмотреть на sheets.google.com

Загрузка таблиц из Colab в Google Tаблицы 

3. Прежде всего, открываем рабочую книгу для записи в нее значений: 

ws = gc.open('demo').sheet1

4. Затем выбираем ячейки для заполнения: 

Обновление таблиц в Google Tаблицах в Colab (1)

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

Обновление таблиц в Google Таблицах в Colab (2)

6. Для обновления этих ячеек в рабочей таблице применяем метод update_cells

Обновление таблиц в Google Таблицах в Colab (3) 

7. Все изменения отображаются в вашей Google таблице. 

Просмотр изменений 

Скачивание данных из Google таблицы 

1. Открываем рабочую книгу с помощью методаopen объекта gc

wb = gc.open('demo')

2. Затем считываем все строки отдельной рабочей таблицы, задействуя метод get_all_values

Скачивание таблиц из Google Таблиц в Colab 

3. Для загрузки этих данных в датафрейм задействуем метод from_record объекта DataFrame

Создание датафрейма из скаченных Google Таблиц 

Обращение к Google Cloud Storage (GCS) из Google Colab 

Для работы с GCS необходим проект Google Cloud (GCP). Вы можете создавать и подключаться к корзинам GCS в Colab через предустановленную утилиту командной строки gsutil

1. Сначала указываем ID проекта: 

project_id = '<project_ID>'

2. Для доступа к GCS проводим аутентификацию вашего аккаунта Google: 

from google.colab import auth
auth.authenticate_user()

3. Выполнив вышеуказанный код, получаем ссылку для аутентификации и открываем ее. 

4. Выбираем аккаунт Google для соединения. 

5. Разрешаем доступ Google Cloud SDK к вашему аккаунту Google. 

6. Теперь копируем отображаемый код, вставляем его в текстовое окно и нажимаем Enter. 

Аутентификация Google Could SDK

7. Затем настраиваем gsutil для работы с проектом: 

! gcloud config set project {project_id}

8. Вы можете создать корзину с помощью соответствующей команды mb (“make bucket”). У корзин GCP должны быть универсальные уникальные имена, поэтому воспользуемся предустановленной библиотекой uuid для создания такого рода ID: 

import uuid

bucket_name = f'sample-bucket-{uuid.uuid1()}'
! gsutil mb gs://{bucket_name}

9. Как только корзина готова, загружаем в нее файл из среды Colab: 

! gsutil cp /tmp/to_upload.txt gs://{bucket_name}/

10. По окончании загрузки файл становится видимым в браузере GCS для вашего проекта: https://console.cloud.google.com/storage/browser?project=<project_id>

! gsutil cp gs://{bucket_name}/{filename} {download_location}

По завершении скачивания файл отображается на панели менеджера файлов в Colab в указанном месте. 

Обращение к AWS S3 из Google Colab 

Для доступа к S3 из Colab потребуется создать аккаунт AWS, настроить IAM, а также сгенерировать ключ доступа и секретный ключ доступа. Необходимо также установить библиотеку awscli в среду Colab: 

1. Устанавливаем библиотеку awscli: 

! pip install awscli

2. После установки запускаем настройку AWS командой aws configure:

Конфигурация AWS

3. Вводим access_key и secret_access_key в текстовое окно и нажимаем Enter: 

Теперь можно скачивать любые файлы из S3:

! aws s3 cp s3://{bucket_name} ./{download_location} --recursive 
--exclude "*" --include {filepath_on_s3}

filepath_on_s3 позволяет указать один файл или подобрать несколько файлов по шаблону. 

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

Для загрузки файла просто поменяйте местами аргументы источника и назначения: 

! aws s3 cp ./{upload_from} s3://{bucket_name} --recursive --exclude "*" --include {file_to_upload}

file_to_upload позволяет указать один файл или подобрать несколько файлов по шаблону.

Вы получите уведомление об окончании загрузки, и загруженные файлы будут доступны в корзине S3 в заданном каталоге: https://s3.console.aws.amazon.com/s3/buckets/{bucket_name}/{folder}/?region={region}

Обращение к датасетам Kaggle из Google Colab 

Для скачивания датасетов из Kaggle требуется наличие аккаунта и API-токена.  

  1. Для создания API-токена заходим в My Account, после чего  —  Create New API Token. 
  2. Открываем файл kaggle.json и копируем его содержимое в виде {"username":"########", "key":"################################"}. 
  3. Выполняем следующие команды в Colab: 
! mkdir ~/.kaggle #создаем каталог .kaggle в корневой директории
! echo '<PASTE_CONTENTS_OF_KAGGLE_API_JSON>' > ~/.kaggle/kaggle.json #записываем учетные данные kaggle API в kaggle.json
! chmod 600 ~/.kaggle/kaggle.json  # устанавливаем разрешения 
! pip install kaggle #устанавливаем библиотеку kaggle

4. После создания файла kaggle.json в Colab и установки библиотеки Kaggle приступаем к поиску датасета с помощью следующей команды:  

! kaggle datasets list -s {KEYWORD}

5. Скачиваем нужный датасет с помощью команды: 

! kaggle datasets download -d {DATASET NAME} -p /content/kaggle/

Датасет будет загружен и доступен по указанному пути (в данном случае /content/kaggle/).

Обращение к базам данных MySQL из Google Colab 

1. Для работы с реляционными базами данных необходимо импортировать предустановленную библиотеку sqlalchemy. 

import sqlalchemy

2. Вводим данные для подключения и создаем движок: 

HOSTNAME = 'ENTER_HOSTNAME'
USER = 'ENTER_USERNAME'
PASSWORD = 'ENTER_PASSWORD'
DATABASE = 'ENTER_DATABASE_NAME'
 
connection_string = f'mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOSTNAME}/{MYSQL_DATABASE}'
 
engine = sqlalchemy.create_engine(connection_string)

3. Создаем SQL-запрос и загружаем его результаты в датафрейм с помощью pd.read_sql_query()

query = f"SELECT * FROM {DATABASE}.{TABLE}"

import pandas as pd
df = pd.read_sql_query(query, engine)

Ограничения Google Colab при работе с файлами 

При работе с Colab важно помнить о том, что доступ к загружаемым файл ограничен по времени. Colab  —  это временная среда, в которой тайм-аут простоя составляет 90 минут, а абсолютный тайм-аут  —  12 часов. Это значит, что отключение среды выполнения происходит в случае 90 минутного простоя или 12-ти часового использования. Такое отключение приводит к потери всех переменных, состояний, установленных пакетов и файлов, вследствие чего при повторном подключении вас ждет встреча с абсолютно новой и чистой средой. 

Кроме того, дисковое пространство Colab ограничено 108 Гб, только 77 Гб из которых доступны пользователю. Этого объема достаточно для решения большинства задач, но вот при работе с крупными датасетами, например изображениями или видео, данное обстоятельство нельзя упускать из внимания.

Заключение 

Google Colab  —  превосходный инструмент для тех, кто стремится обуздать мощь высокопроизводительных вычислительных ресурсов, таких как GPU, без оглядки на их стоимость. 

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

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

Полезные информационные ресурсы 

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Siddhant Sadangi: How To Manage Files in Google Colab

Предыдущая статьяСоветы по созданию правильных модальных окон
Следующая статьяКак писать код на Python лучше: 6 рекомендаций