147 votes

Google Colab : comment lire les données de mon google drive ?

Le problème est simple : J'ai des données sur gDrive, par exemple à /projects/my_project/my_data* .

J'ai également un simple carnet de notes dans gColab.

Donc, je voudrais faire quelque chose comme :

for file in glob.glob("/projects/my_project/my_data*"):
    do_something(file)

Malheureusement, tous les exemples (comme celui-ci - https://colab.research.google.com/notebook#fileId=/v2/external/notebooks/io.ipynb par exemple) suggère de ne charger principalement que toutes les données nécessaires dans l'ordinateur portable.

Mais, si j'ai beaucoup de données, cela peut être assez compliqué. Existe-t-il des possibilités de résoudre ce problème ?

Merci pour votre aide !

13 votes

Surprenant ! Personne n'a donné de lien vers ce cahier de colab qui décrit toutes les méthodes disponibles en avril 2019 -. colab.research.google.com/notebooks/io.ipynb

341voto

Bob Smith Points 12540

Modifier : À partir de février 2020, il y a maintenant une interface utilisateur de première classe pour monter automatiquement Drive.

Tout d'abord, ouvrez le navigateur de fichiers sur le côté gauche. Un bouton "Monter le disque" s'affiche. Une fois que vous aurez cliqué, vous verrez une demande d'autorisation pour monter le disque dur, et ensuite vos fichiers du disque dur seront présents sans aucune configuration lorsque vous retournerez à l'ordinateur portable. Le flux terminé ressemble à ceci :

Drive auto mount example

La réponse originale suit, ci-dessous. (Cela fonctionnera aussi toujours pour les cahiers partagés).

Vous pouvez monter vos fichiers Google Drive en exécutant l'extrait de code suivant :

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

Ensuite, vous pouvez interagir avec vos fichiers Drive dans le panneau latéral du navigateur de fichiers ou en utilisant des utilitaires de ligne de commande.

Voici un exemple de carnet de notes

49 votes

C'est la solution la plus simple pour monter votre gdrive sur google colab, je pense que cela devrait être la réponse acceptée

0 votes

Réponse canonique, sympa. Le carnet d'exemple est en lecture seule et ne peut pas être utilisé directement. En faisant Fichier->Enregistrer, vous sauvegarderez un fichier sur le disque.

0 votes

Comment passer à un autre niveau ? par exemple drive.mount('/content/drive/name with space')

70voto

wenkesj Points 564

Bonne nouvelle, PyDrive a un support de première classe sur CoLab ! PyDrive est une enveloppe pour le client python de Google Drive. Voici un exemple de la façon dont vous pouvez télécharger TOUTES d'un dossier, de manière similaire à l'utilisation de glob + * :

!pip install -U -q PyDrive
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# 1. Authenticate and create the PyDrive client.
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# choose a local (colab) directory to store the data.
local_download_path = os.path.expanduser('~/data')
try:
  os.makedirs(local_download_path)
except: pass

# 2. Auto-iterate using the query syntax
#    https://developers.google.com/drive/v2/web/search-parameters
file_list = drive.ListFile(
    {'q': "'1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk' in parents"}).GetList()

for f in file_list:
  # 3. Create & download by id.
  print('title: %s, id: %s' % (f['title'], f['id']))
  fname = os.path.join(local_download_path, f['title'])
  print('downloading to {}'.format(fname))
  f_ = drive.CreateFile({'id': f['id']})
  f_.GetContentFile(fname)

with open(fname, 'r') as f:
  print(f.read())

Remarquez que les arguments de drive.ListFile est un dictionnaire qui coïncide avec les paramètres utilisés par API HTTP de Google Drive (vous pouvez personnaliser le q à adapter à votre cas d'utilisation).

Sachez que dans tous les cas, les fichiers/dossiers sont codés par des identifiants (voir l'onglet 1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk ) sur Google Drive. Pour ce faire, vous devez rechercher dans Google Drive l'identifiant spécifique correspondant au dossier dans lequel vous souhaitez lancer votre recherche.

Par exemple, naviguez vers le dossier "/projects/my_project/my_data" que se trouve dans votre Google Drive.

Google Drive

Voyez qu'il contient quelques fichiers, dans lesquels nous voulons télécharger à CoLab. Pour obtenir l'id du dossier afin de l'utiliser par PyDrive, regardez l'url et extrayez le paramètre id. Dans ce cas, l'url correspondant au dossier était :

https://drive.google.com/drive/folders/1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk

Où l'id est le dernier élément de l'url : 1SooKSw8M4ACbznKjnNrYvJ5wxuqJ-YCk .

1 votes

Merci ! Cela fonctionne vraiment ! Et connaissez-vous des solutions pour copier tout le répertoire gDrive ?

0 votes

@Scitator voulez-vous dire tous les fichiers dans Google Drive ?

0 votes

@Scitator s'il vous plaît jetez un coup d'oeil à pythonhosted.org/PyDrive/ pour votre question

40voto

H-San Points 151

Merci pour les bonnes réponses ! Le moyen le plus rapide d'envoyer quelques fichiers uniques à Colab depuis Google drive : Chargez l'assistant Drive et montez

from google.colab import drive

Une autorisation vous sera demandée.

drive.mount('/content/drive')

Ouvrez le lien dans un nouvel onglet-> vous obtiendrez un code - copiez-le dans l'invite. vous avez maintenant accès à google drive vérifier :

!ls "/content/drive/My Drive"

puis copier le(s) fichier(s) selon les besoins :

!cp "/content/drive/My Drive/xy.py" "xy.py"

confirmer que les fichiers ont été copiés :

!ls

0 votes

Est-il possible de ne monter qu'un répertoire spécifique de mon disque sur colab ?

0 votes

Je crains que ce ne soit pas possible actuellement.

19voto

Sundeep Pidugu Points 1395

La plupart des réponses précédentes sont un peu (très) compliquées,

from google.colab import drive
drive.mount("/content/drive", force_remount=True)

J'ai trouvé que c'était le moyen le plus simple et le plus rapide de monter google drive sur un ordinateur. CO Lab Vous pouvez modifier le mount directory location à ce que vous voulez en changeant simplement le paramètre pour drive.mount . Il vous donnera un lien pour accepter les permissions avec votre compte et ensuite vous devez copier coller la clé générée et alors le disque sera monté dans le chemin sélectionné.

force_remount n'est utilisé que lorsque vous devez monter le disque, qu'il soit chargé ou non auparavant. Vous pouvez négliger ce paramètre si vous ne voulez pas forcer le montage.

Edit : Vérifiez ceci pour trouver d'autres façons de faire le IO opérations en collaboration https://colab.research.google.com/notebooks/io.ipynb

14voto

Himanshu Poddar Points 120

Vous ne pouvez pas stocker de façon permanente un fichier sur colab. Cependant, vous pouvez importer des fichiers de votre disque dur et chaque fois que vous avez terminé, vous pouvez les sauvegarder.

Pour monter le lecteur google sur votre session Colab

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

vous pouvez simplement écrire sur Google Drive comme vous le feriez sur un système de fichiers local. Maintenant si vous voyez votre google drive sera chargé dans l'onglet Fichiers. Maintenant vous pouvez accéder à n'importe quel fichier de votre colab, vous pouvez écrire aussi bien que lire de lui. Les modifications seront effectuées en temps réel sur votre lecteur et toute personne ayant le lien d'accès à votre fichier peut voir les modifications apportées par vous à partir de votre laboratoire.

Exemple

with open('/content/gdrive/My Drive/filename.txt', 'w') as f:
   f.write('values')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X