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.
Почему это важно
Когда люди по ту сторону не пишут код, на первый план выходят предсказуемые пути и повторяемость поведения. Монтирование Диска и загрузка в фиксированное место устраняют ручной ввод путей и упрощают автоматизацию и сопровождение остальной части блокнота.
Выводы
Монтируйте Диск в начале сессии, при загрузке указывайте путь на Диске и используйте абсолютные пути для последующей обработки. Если пользователям удобен управляемый выбор, добавьте простой виджет-выбор папки — так процесс останется понятным и единообразным.