CoLab Доступ к файлам

Это здорово, что я могу запускать записные книжки jupyter в CoLab, но я схожу с ума, сохраняя и загружая файлы. Например, я пишу задание для своего курса и включаю в него рисунки с помощью тега HTML. (Я хочу использовать HTML вместо изображений уценки, чтобы я мог установить ширину.) Итак, в текстовой ячейке у меня есть

<img src = "CoLab04.png" width = "250">

Это нормально работает, когда я запускаю блокнот jupyter на своем ноутбуке, но в CoLab он не может найти изображение даже если образ находится в той же папке CoLab, что и файл ipynb. Err.

У меня похожие проблемы с сохранением файлов данных. На моем ноутбуке я могу использовать обычные функции Python open, write, close и т. д. Этот код работает без жалоб, но файлы не отображаются на Google Диске. Не в папке CoLab или любой другой папке, когда я ищу по всему своему Google Диску. Err. Я читаю TFM и использую

from google.colab import drive, files
drive.mount('/content/gdrive')
fig.savefig("LED12.png") # saves a figure as a file
files.download("LED12.png")

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

Я что-то упускаю? Почему так сложно создавать и читать файлы Google Диска с помощью записной книжки Google-CoLab jupyter?

Я читал https://colab.research.google.com/notebooks/io.ipynb, но почему это так сложно? Мне нужно что-то простое для использования студентами новичок. Если чтение и запись файлов так сложно, мне придется порекомендовать своим ученикам установить jupyter на свои ноутбуки и не использовать CoLab.

У меня была такая же проблема с сохранением файла на диск из colab, я обнаружил, что вы можете сохранять только файлы txt непосредственно на смонтированный диск. Поэтому я использую PyDrive для загрузки файлов прямо из колаба на диск.

trsvchn 06.12.2018 15:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
7 040
3

Ответы 3

Может быть проще загружать записные книжки с GitHub, где ссылки на изображения в том же репозитории будут загружаться более интуитивно.

Например, в записной книжке ниже загружается набор изображений из репозитория GitHub.

https://colab.research.google.com/github/jakevdp/PythonDataScienceHandbook/blob/master/notebooks/05.01-What-Is-Machine-Learning.ipynb

Ссылка на уценку для первого графика:

![](figures/05.01-classification-1.png)
[figure source in Appendix](06.00-Figure-Code.ipynb#Classification-Example-Figure-1)

Это соответствует репозиторию GitHub здесь: https://github.com/jakevdp/PythonDataScienceHandbook/

Основываясь на этом примере, распространенным шаблоном для объединения файлов данных является добавление команды !git clone ... в верхней части записной книжки, чтобы получить все репо за один раз.

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

Это просто подтверждает, что студенту новичок будет непросто.

Prof Huster 01.03.2019 14:34

@profhuster Вы когда-нибудь находили решение этой проблемы? У меня такие же проблемы. Я также посмотрел на kaggle, который немного менее сложен, но все же сложнее, чем я бы хотел, чтобы мои ученики имели дело.

ericf 31.07.2019 23:07

Нет. У меня студенты устанавливают python и запускают на своих ноутбуках.

Prof Huster 16.12.2019 21:08

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

Шаг 1 : Перейдите на свой Google диск и создайте папку: Колаб и храните свои файлы в папке Colab.

Шаг 2 : Теперь установите pydrive в блокнот Colab jupyter

!pip install pydrive

Шаг 3 : Выполните следующие команды для доступа к файлу Google Диска

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

Шаг 4: Смонтировать диск (здесь вы получите ссылку в оболочке Colab jupyter. Щелкните созданную ссылку и подтвердите свой диск Google (просто скопируйте и вставьте сгенерированный код))

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

Шаг 5: Аутентифицируйте и создайте клиента PyDrive. Здесь сделайте то же, что и в шаге 4 (нажмите на сгенерированную ссылку и проверьте свой Google диск (просто скопируйте и вставьте сгенерированный код))

auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

Шаг 6: Чтобы получить файл, замените id на id (идентификатор вашего файла) файла, к которому вы хотите получить доступ. Для меня это был файл csv. Чтобы получить идентификатор, перейдите в раздел и сгенерируйте ссылку. вы найдете что-то вроде: https://drive.google.com/file/d/xxxxxxxxxxxxxx / view? usp = sharing. Поместите его (xxxxxxxxxxxxxx) ниже и сделайте то же самое, сколько файлов вы хотите прочитать.

normal_1 = drive.CreateFile({'id':'13AR0sS1pndF0fTxmdjQRv_1Bv5aBNpkT'}) 
normal_1.GetContentFile('normal_1.csv')

normal_2 = drive.CreateFile({'id':'1Z0DO8M1Qco07kyVoxYSgxXBx6XYGBzJd'}) 
normal_2.GetContentFile('normal_2.csv')

abnormal = drive.CreateFile({'id':'12zFHDXVjreorRrHHhYrA1n82VQLuawsl'}) 
abnormal.GetContentFile('abnormal.csv')

Шаг 7: Теперь вы можете читать эти файлы и загружать их в фрейм данных для дальнейшего использования.

normal_1 = pd.read_csv('normal_1.csv', skiprows = np.arange(100, normal_1.shape[0])) 
normal_2 = pd.read_csv('normal_2.csv', skiprows = np.arange(100, normal_2.shape[0])) 
abnormal = pd.read_csv('abnormal.csv', skiprows = np.arange(50, abnormal.shape[0])) 

Шаг 8: Сохраните модель на диск после обучения вашей модели: используйте joblib

from sklearn.externals import joblib
filename = 'model.sav'
joblib.dump(clf, filename)

# Upload model to you google drive
model_file = drive.CreateFile({'title' : 'model.sav'})
model_file.SetContentFile('model.sav')
model_file.Upload()

Теперь перейдите на свой диск и обновите его. Вы найдете что-то «model.sav». Полный код в файле записной книжки jupyter можно найти по моей ссылке github. Надеюсь, это поможет вам решить вашу проблему.

Этот ответ только усугубляет проблему. Я хочу, чтобы студенты, начинающие программировать в записных книжках на python / jupyter, могли легко.

Prof Huster 01.03.2019 14:35

Мне кажется проблема с sys.path.

После монтирования My Drive с помощью следующего кода

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

тогда ваш основной Google Диск можно будет прочитать с помощью

!ls /content/drive/My Drive/

Если у вас есть подпапка в My Drive, в которой вы хотите централизовать свой проект colab, допустим, у вас есть папка projectA в вашем основном каталоге Google Диска. Вы можете добавить путь к папке projectA на sys.path

import sys
sys.path.append("/content/drive/My Drive/projectA")

Тогда вы сможете сохранить свой инжир так же, как вы использовали в корневом пути вашего локального компьютера. Файл будет сохранен в папке projectA, в которой вы запустите свой код colab.

fig.savefig("LED12.png")

Вы должны увидеть, как файл появится там. Если это не сработает, попробуйте использовать абсолютный путь при выполнении операций open, save, close и т. д., Чувствительных к пути:

working_path = '/content/drive/My Drive/projectA'
fig.savefig(os.path.join(working_path, "LED12.png"))

благодаря. мне нужно делать это каждый раз, когда мне нужно сохранить файл?

Nguai al 19.06.2021 23:13

Да, для каждого сеанса вам нужно снова подключать My Drive.

Katherine Chen 21.06.2021 02:11

Другие вопросы по теме