Office365-rest-python-client: impossible de télécharger le fichier via get_file_by_server_relative_url

Créé le 21 mai 2020  ·  4Commentaires  ·  Source: vgrem/Office365-REST-Python-Client

Bonjour @vgrem , le code suivant lève ValueError .

...
web = client_context.web
client_context.load(web)
server_relative_url = f'/{folder_name}/{filename}'
logger.info(f'relative path: {server_relative_url}')
file = web.get_file_by_server_relative_url(server_relative_url)
return file.read()

Ce serait bien d'ajouter un message à cette erreur comme celui-ci
```
augmenter ValueError('vous avez fait ceci et cela mal...')

question

Tous les 4 commentaires

ajouter ceci avant que file.read() résolve mon problème

client_context.load(file)
client_context.execute_query()

C'est vrai, ce sont les méthodes manquantes, la méthode File.read s'attend à ce que les métadonnées du fichier (propriété ServerRelativeUrl en particulier pour adresser correctement le fichier) soient récupérées avant que le fichier ne soit téléchargé :

client_context.load(file)  
client_context.execute_query()

Comme il n'est peut-être pas très intuitif de télécharger le contenu d'un fichier, une autre méthode File.download a été introduite, maintenant le fichier peut être téléchargé comme ceci :

with open(download_path, "wb") as local_file:
    source_file = ctx.web.get_file_by_server_relative_url(file_url)
    source_file.download(local_file)
    ctx.execute_query()

Merci @vgrem , c'est une grande amélioration de la convivialité pour les nouveaux arrivants !

file.download fait-il partie de 2.1.7.post1 ?

le dernier de pip ne peut aller que loin
liste de pépins | grep -i bureau
Office365-REST-Python-Client 2.1.7.post1

2.1.8
pip install --upgrade Office365-REST-Python-Client==2.1.8
ERREUR : impossible de trouver une version qui satisfait à l'exigence Office365-REST-Python-Client==2.1.8 (à partir des versions : 1.0.0, 1.0.1, 1.1.0, 2.0.0, 2.1.1, 2.1.2 , 2.1.3, 2.1.4, 2.1.5, 2.1.6.post2, 2.1.7.post1)
ERREUR : aucune distribution correspondante trouvée pour Office365-REST-Python-Client==2.1.8

==== Contournement temporaire ====

importer le fichier temporaire
importer le système d'exploitation
download_path = os.path.join(tempfile.mkdtemp(), os.path.basename(location))
file_url = '/sites/Integration/Shared Documents/SomeFolder/somefile.csv'
download_path = os.path.join(tempfile.mkdtemp(), os.path.basename(file_url))
download_path
avec open(download_path, "wb") comme local_file :
source_file = ctx.web.get_file_by_server_relative_url(file_url)
fichier source
ctx.load(fichier_source)
ctx.execute_query()
r = fichier_source.read()
ctx.execute_query()
print("Données :", r)
fichier_local.write(r)
fichier_local.close()
print("[Ok] le fichier a été téléchargé : {0}".format(download_path))

Cette page vous a été utile?
0 / 5 - 0 notes