хотите использовать colaboratory. Какой самый простой способ получить файл диска на python (инкапсулированный)?

Я ищу упрощение/инкапсуляцию, чтобы мои существующие программы, использующие (sic) open("my_file.txt"), можно было перенести в совместную работу с минимальными изменениями в существующем логическом потоке. Рад иметь некоторую логику вырезания/вставки перед моей существующей логикой.

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

  1. загрузить на гугл диск
  2. загрузить на python (vm, возможно, в /tmp)

И тогда я могу выполнить свой существующий код без изменений.

Поэтому я подозреваю/предполагаю, что для меня (но не только для меня!) работает интерфейс/функция следующим образом:

  • inputs (from local computer)
    • source_file_dir
    • исходный_файл_имя
    • (конечно, входные данные аутентификации требуются неявно)
  • output
    • python_vm_file_dir (dir I can use in my program; /tmp is fine)
    • (неявно я ожидаю того же самого dest_file_name)

С помощью этого фрагмента кода я легко перемещаю код в совместную работу.

Кто-нибудь уже создал это?

Спасибо.


person Tim Misner    schedule 23.12.2017    source источник


Ответы (2)


Я занимался подобными вопросами. С точки зрения простоты я обнаружил, что хранить файлы данных в Google Cloud Storage проще всего. Это довольно хорошо объяснено в руководстве - https://colab.research.google.com/notebook#fileId=/v2/external/notebooks/io.ipynb

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

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

Таким образом, я обычно могу оставить «активные» блоки кода такими же, какие я запускаю локально.

Я использую Chromebook, когда нахожусь вне дома, поэтому предпочитаю хранить как можно больше данных в облаке. Довольно легко настроить «подключенный сетевой диск» (как говорят в Windows) к корзине GCS — для перемещения файлов. Это также очень просто в Linux. Windows, я обнаружил, что эта утилита действительно удобна https://www.cloudberrylab.com/drive/google-cloud.aspx — не реклама, я просто фанат.

person Peter Coghill    schedule 24.12.2017

Загрузить на Google Диск. Вот фрагмент кода для прямого доступа к нему.

!apt-get install -y -qq software-properties-common python-software-properties 
module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret= 
{creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret= 
{creds.client_secret}

Теперь создайте каталог диска

!mkdir -p drive
!google-drive-ocamlfuse drive

Вы можете просто получить доступ к любому файлу, присутствующему на диске Google, как имя диска/файла.

Eg.

df = pandas.read_hdf("drive/Colab Notebooks/S2C5_complete_cleaned_by_me_10percent.h5")

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

person Dhruvil Shah    schedule 28.06.2018