Obtenir un ensemble de fichiers pdf sous forme de fichier zip à partir d’un serveur utilisant python

J’essaie d’obtenir un ensemble de fichiers pdf présents dans le serveur sous forme de fichier zip en utilisant le code python ci-dessous. Mais je ne suis pas capable de le faire, quelqu’un peut-il m’aider à ce sujet. Quels que soient les awbs que je donne dans ce code, ils doivent les inclure dans un fichier zip.

Merci d’avance.

import requests import json def downloadLabels(awbs): if awbs: url = 'http:///Labels/downloadLabels' resp = requests.post(url, data={'files': json.dumps(','.join(awbs))}) print resp.json() else: print "NO AWB Provided" downloadLabels(['1234','6789','1011']) 

awb est une liste de nombres séparés par des virgules, en utilisant cette awbs seulement, nous aurons ces pdfs présents dans le serveur.

    Vous devez d’abord essayer d’obtenir le contenu binary de chaque pdf

    la doc de requêtes dans http://docs.python-requests.org/en/latest/user/quickstart/#binary-response-content donne l’exemple de code:

     >>> from PIL import Image >>> from SsortingngIO import SsortingngIO >>> i = Image.open(SsortingngIO(r.content)) 

    Dans votre situtaion, vous pouvez simplement obtenir le contenu binary via resp.content

    Ensuite, vous pouvez écrire chaque pdf dans un fichier zip

    zipfile est la librairie standard pour faire ce travail. Vous avez juste besoin de créer un object Zipfile accessible en écriture et d’écrire les fichiers PDF dans cet object Zipfile. Je pense que la fonction writestr peut prendre le contenu du fichier en tant que chaîne binary, et écrira ce contenu dans le fichier zip.

    Et le code peut ressembler à ceci:

     with ZipFile('zipfilename.zip', 'w') as myzip: myzip.writestr('nameinthezipfile', resp.content)