Télécharger zip et extraire les fichiers
Bonjour,
Novice et autodidacte dans le langage python, je me tourne vers la communauté pour obtenir de l'aide sur un code qui doit me permettre de télécharger un fichier zip puis dans extraire l'ensemble de ces fichiers dans un dossier. Mon code est donc le suivant :
Code:
1 2 3 4 5 6 7 8 9 10
| if os.path.exists(repertoire):
print ("dossier : OK")
else :
os.makedirs(repertoire)
# Téléchargement du fichier
req = requests.get(url,stream=True)
# Extrait le ZIP
zipfile= zipfile.ZipFile(BytesIO(req.content))
zipfile.extractall(repertoire) |
La difficulté est qu'une fois sur 10, le traitement s'arrête soudainement et remonte des exceptions de ce genre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Traceback (most recent call last):
File "C:\Program Files\QGIS 3.34.7\apps\Python312\Lib\site-packages\requests\models.py", line 816, in generate
yield from self.raw.stream(chunk_size, decode_content=True)
File "C:\Program Files\QGIS 3.34.7\apps\Python312\Lib\site-packages\urllib3\response.py", line 1040, in stream
yield from self.read_chunked(amt, decode_content=decode_content)
File "C:\Program Files\QGIS 3.34.7\apps\Python312\Lib\site-packages\urllib3\response.py", line 1184, in read_chunked
self._update_chunk_length()
File "C:\Program Files\QGIS 3.34.7\apps\Python312\Lib\site-packages\urllib3\response.py", line 1119, in _update_chunk_length
raise ProtocolError("Response ended prematurely") from None
urllib3.exceptions.ProtocolError: Response ended prematurely
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Script\SUP\geo_sup.py", line 125, in <module>
zipfile= zipfile.ZipFile(BytesIO(req.content))
^^^^^^^^^^^
File "C:\Program Files\QGIS 3.34.7\apps\Python312\Lib\site-packages\requests\models.py", line 899, in content
self._content = b"".join(self.iter_content(CONTENT_CHUNK_SIZE)) or b""
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\QGIS 3.34.7\apps\Python312\Lib\site-packages\requests\models.py", line 818, in generate
raise ChunkedEncodingError(e)
requests.exceptions.ChunkedEncodingError: Response ended prematurely |
J'ai écumé les différentes discussions notamment celle-ci :
https://stackoverflow.com/questions/...-with-requests
Néanmoins, j'ai quelques difficultés à assimiler le problème, ( il semble que ce soit lié à la tache qui demande des ressources mémoires au dela de la limite autorisée) et à le résoudre.
Pouvez-vous m'aider à ce sujet ?
D'avance un grand :merci: