2025, Dec 10 00:02

Загрузка файлов в Google Drive из Colab: монтирование и выбор папки

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

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

Постановка задачи

Стандартный помощник загрузки помещает файлы во временное хранилище, которое исчезает вместе с окружением выполнения. Это неудобно, если процесс рассчитан на постоянные пути в Диске — особенно когда пользователи отправляют крупные папки с десятками .avi-файлов (1–2 ГБ).

from google.colab import files as colab_files

colab_files.upload()

Что происходит

Помощник выше по умолчанию работает с локальной файловой системой блокнота. Google Drive — это другое место: его нужно сначала примонтировать в среде выполнения, а затем явно указать как каталог назначения для загрузок. Иначе файлы не появятся на Диске, и ваш код не сможет обратиться к ним по путям Drive.

Решение: примонтируйте Диск и загружайте в нужную папку

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

from google.colab import drive as gdrive

gdrive.mount('/content/drive')

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

from google.colab import files as colab_files

colab_files.upload('/content/drive/MyDrive')

Когда файлы уже на Диске, с ними можно работать через стандартные модули и библиотеки Python:

import os

os.listdir('/content/drive/MyDrive')
import pandas as pds

frame = pds.read_csv('/content/drive/MyDrive/my_data.csv')

Справка: External data: Local Files, Drive, Sheets, and Cloud Storage — Colab: https://colab.research.google.com/notebooks/io.ipynb?hl=en#scrollTo=7Z2jcRKwUHqV

Опционально: дайте пользователям выбрать папку на Диске через выпадающий список

Чтобы упростить работу, можно показать список папок на Диске и загружать в папку, которую выберет пользователь. Это избавляет от жестко прописанных путей и делает процесс понятным.

import os
import ipywidgets as ui
from IPython.display import display
from google.colab import files as colab_files

root_dir = '/content/drive/MyDrive'
entries = os.listdir(root_dir)
dirnames = [nm for nm in entries if os.path.isdir(os.path.join(root_dir, nm))]

# Сделаем базовую папку Drive первым доступным вариантом
dirnames.insert(0, '.')

dir_picker = ui.Dropdown(
    options=dirnames,
    description='Select folder',
)

def handle_select(evt):
    chosen = evt['new']
    target_dir = os.path.join(root_dir, chosen)
    print('name:', chosen)
    print('full:', target_dir)
    colab_files.upload(target_dir)

dir_picker.observe(handle_select, names='value')
display(dir_picker)

Подробнее о виджетах: Dropdown, Select и File Upload в документации ipywidgets: dropdown, select, file-upload.

Почему это важно

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

Выводы

Монтируйте Диск в начале сессии, при загрузке указывайте путь на Диске и используйте абсолютные пути для последующей обработки. Если пользователям удобен управляемый выбор, добавьте простой виджет-выбор папки — так процесс останется понятным и единообразным.