web-dev-qa-db-fra.com

Extraire Google Drive Zip à partir de Google colab notebook

J'ai déjà un jeu de données Zip of (2K images) sur un lecteur Google. Je dois l’utiliser dans un algorithme de formation ML . Below Code extrait le contenu au format chaîne:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
import io
import zipfile
# Authenticate and create the PyDrive client.
# This only needs to be done once per notebook.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# Download a file based on its file ID.
#
# A file ID looks like: laggVyWshwcyP6kEI-y_W3P8D26sz
file_id = '1T80o3Jh3tHPO7hI5FBxcX-jFnxEuUE9K' #-- Updated File ID for my Zip
downloaded = drive.CreateFile({'id': file_id})
#print('Downloaded content "{}"'.format(downloaded.GetContentString(encoding='cp862')))

Mais je dois l'extraire et le stocker dans un répertoire séparé, car cela faciliterait le traitement (ainsi que la compréhension) de l'ensemble de données.

J'ai essayé de l'extraire plus loin, mais en obtenant "Pas une erreur zipfile"

dataset = io.BytesIO(downloaded.encode('cp862'))
Zip_ref = zipfile.ZipFile(dataset, "r")
Zip_ref.extractall()
Zip_ref.close()

Jeu de données Google Drive

Remarque: l'ensemble de données est juste pour référence, j'ai déjà téléchargé ce fichier Zip sur mon lecteur google, et je fais référence au fichier dans mon lecteur uniquement.

5
Laxmikant

Vous pouvez utiliser ceci simplement ceci

!unzip file_location
6
Harsh Gupta

Au lieu de GetContentString(), utilisez GetContentFile () à la place. Il enregistre le fichier au lieu de renvoyer la chaîne.

downloaded.GetContentFile('images.Zip') 

Ensuite, vous pourrez le décompresser plus tard avec unzip.

1