web-dev-qa-db-fra.com

Comment télécharger un fichier csv (et l'utiliser) depuis google drive dans google colaboratory

Je voulais essayer python, et google colaboratory semblait l'option la plus simple. J'ai des fichiers dans mon lecteur google et je voulais les télécharger dans google colaboratory . Voici donc le code que j'utilise

!pip install -U -q PyDrive

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)

# 2. Create & upload a file text file.
uploaded = drive.CreateFile({'xyz.csv': 'C:/Users/abc/Google Drive/def/xyz.csv'})
uploaded.Upload()
print('Uploaded file with title {}'.format(uploaded.get('title')))

import pandas as pd
xyz = pd.read_csv('Untitled.csv')

Fondamentalement, pour l'utilisateur "abc", je voulais télécharger le fichier xyz.csv du dossier "def" . Je peux télécharger le fichier, mais lorsque je demande le titre, le titre est "Sans titre" . Quand je demande l’identifiant du fichier qui a été téléchargé, il change à chaque fois, donc je ne peux pas utiliser cet Id.

Comment puis-je lire le fichier ??? et définir un nom de fichier approprié ???

xyz = pd.read_csv('Untitled.csv') doesnt work
xyz = pd.read_csv('Untitled') doesnt work
xyz = pd.read_csv('xyz.csv') doesnt work

Voici quelques autres liens que j'ai trouvés.

Comment importer et lire un fichier shelve ou Numpy dans Google Colaboratory?

Charger les fichiers de données locaux dans le Colaboratory

12
Akhil

Pour lire un fichier csv de mon lecteur google dans colaboratory, je devais suivre les étapes suivantes:

1) Je devais d'abord autoriser colaboratory à accéder à mon disque Google avec PyDrive. J'ai utilisé leur exemple de code pour cela. (collé ci-dessous)

2) J'avais également besoin de me connecter à mon drive.google.com pour trouver l'ID cible du fichier que je voulais télécharger. J'ai trouvé cela en faisant un clic droit sur le fichier et en copiant le lien partagé pour l'identifiant. L'identifiant ressemble à quelque chose comme ceci: '1BH-rffqv_1auzO7tdubfaOwXzf278vJK' 

3) Puis j'ai lancé download.GetContentFile ('monNom.csv') - en indiquant le nom que je voulais (dans votre cas, il s'agit de xyz.csv) 

Cela semble fonctionner pour moi!

J'ai utilisé le code qu'ils ont fourni dans leur exemple:

# Code to read csv file into colaboratory:
!pip install -U -q PyDrive
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)

#2. Get the file
downloaded = drive.CreateFile({'id':'1BH-rffqv_1auzO7tdubfaOwXzf278vJK'}) # replace the id with id of file you want to access
downloaded.GetContentFile('xyz.csv')  

#3. Read file as panda dataframe
import pandas as pd
xyz = pd.read_csv('xyz.csv') 
15
Cendria

La création de fichier prend un corps de fichier dans son premier paramètre. Si vous consultez la documentation de file create , vous pouvez remplir un certain nombre de champs. Dans l'exemple ci-dessous, vous les ajouteriez à file_metadata séparé par une virgule.

file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('files/photo.jpg',
                        mimetype='image/jpeg')
file = drive_service.files().create(body=file_metadata,
                                    media_body=media,
                                    fields='id').execute()

Je vous suggère de lire la section upload de fichiers de la documentation pour avoir une meilleure idée du fonctionnement de l'envoi et des fichiers pouvant être lus à partir de Google Drive. Je ne suis pas sûr que cela vous donne accès à Google colaborate

Solution possible pour votre code.

Je ne suis pas un dev Python mais je suppose que vous pouvez définir votre titre en procédant de la sorte.

uploaded = drive.CreateFile({'xyz.csv': 'C:/Users/abc/Google Drive/def/xyz.csv',
                             'name': 'xyz.csv'})
0
DaImTo

D'accord, je suis presque sûr que je suis assez en retard, mais j'aimerais mettre ceci au clair, juste au cas où… .. Je pense que la meilleure façon de le faire est de

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

Cela générera un lien, cliquera dessus et connectera-vous à l'aide de Google OAuth, collera la clé dans la cellule colab et vous serez connecté!

consultez la liste des fichiers disponibles dans la barre latérale à gauche et copiez le chemin du fichier auquel vous souhaitez accéder. Lisez-le comme vous le feriez avec n'importe quel autre fichier.

0
gavin