Преобразуйте строку в путь, чтобы использовать ее с Unzip в Google Colab Laboratory - PullRequest
0 голосов
/ 23 января 2020

Я работаю с ноутбуком Jupyter в Google Colab Laboratory и хочу разархивировать файл, который находится на моем Google Диске, в папку / tmp.

Я пробовал это:

import os

root_dir = '/tmp/omniglot/data/'
!unzip '/content/gdrive/My Drive/Colab Notebooks/data/omniglot.zip' -d path.path(root_dir)

Но я получаю ошибку:

синтаксическая ошибка рядом с неожиданным токеном `('

Я также пытался:

from pathlib import Path

root_dir = '/tmp/omniglot/data/'
!unzip '/content/gdrive/My Drive/Colab Notebooks/data/omniglot.zip' -d Path(str_path)

Но я получить ту же ошибку.

Как использовать строку root_dir с распаковкой?

Моя Python версия - 3.6.9.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Используйте синтаксис {varname} для передачи Python переменных в оболочку.

import os

root_dir = '/tmp/omniglot/data/'
os.makedirs(root_dir, exist_ok=True)  # Create a target directory if doesn't exist

!unzip '/content/gdrive/My Drive/Colab Notebooks/data/omniglot.zip' -d {root_dir}

Вы также можете использовать zipfile из стандартной библиотеки.

import zipfile

root_dir = '/tmp/omniglot/data/'
zip_file = '/content/gdrive/My Drive/Colab Notebooks/data/omniglot.zip'

with zipfile.ZipFile(zip_file, 'r') as zip_ref:
    zip_ref.extractall(root_dir)

0 голосов
/ 23 января 2020

Вот как я это делаю (без использования команды !unzip):

import os
import zipfile
from pathlib import Path

# Create destination folder if it doesn't exist.
Path(root_dir).mkdir(parents=True, exist_ok=True)

local_zip = '/content/gdrive/My Drive/Colab Notebooks/data/omniglot.zip'

zip_ref = zipfile.ZipFile(local_zip, 'r')

zip_ref.extractall(root_dir)
zip_ref.close()
...