Это здорово, что я могу запускать записные книжки 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.






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

[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 на уровне файлов. Таким образом, было бы немного неудобно иметь общедоступную записную книжку Диска, в которой были бы ссылки на изображения или другие файлы Диска, к которым не предоставлен общий доступ.
Это просто подтверждает, что студенту новичок будет непросто.
@profhuster Вы когда-нибудь находили решение этой проблемы? У меня такие же проблемы. Я также посмотрел на kaggle, который немного менее сложен, но все же сложнее, чем я бы хотел, чтобы мои ученики имели дело.
Нет. У меня студенты устанавливают python и запускают на своих ноутбуках.
Я сделал это в 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, могли легко.
Мне кажется проблема с 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"))
благодаря. мне нужно делать это каждый раз, когда мне нужно сохранить файл?
Да, для каждого сеанса вам нужно снова подключать My Drive.
У меня была такая же проблема с сохранением файла на диск из colab, я обнаружил, что вы можете сохранять только файлы
txtнепосредственно на смонтированный диск. Поэтому я использую PyDrive для загрузки файлов прямо из колаба на диск.