logo ARTICLE 72 Telechargement d un fichier en Python Par : Spox31
Derniere modif le
25 juin 2007,
Lu 951 fois .

Version
imprimable

Dans la même rubrique
Telechargement d un fichier en Python
Sauvegarde SME en Bash
Exemple de script de sauvegarde d un serveur SME vers un disque réseau !

Mots-clés

Téléchargement d un fichier avec ou non un login/Mot de passe et avec ou non le protocole ssl. Tout ca avec une petite barre de progression tres simple.

- Tous les details dans le zip


#!/usr/bin/env python
# -*- coding:Utf-8 -*-
import urllib2, base64, socket, os, sys

#***************************************
#***   variable de depart
#***************************************
Utilisateur = "Utilisateur"
MotDePasse = "Mot-De-Passe"
UrlFichier = "https://192.168.200.5/sauveparam/fb02e4f4fb8caa233e69d1f10d06575d/blabla.txt"
LocalFichier = "blabla.txt"
MessageErreur = "Tout va bien madame la marquise !"

#***************************************
#***   Preparation du telechargement !
#***************************************
socket.setdefaulttimeout(5)
RequetteFichier = urllib2.Request(UrlFichier)
MotDePasseCode = base64.encodestring('%s:%s' % (Utilisateur, MotDePasse))[:-1]
RequetteFichier.add_header("Authorization", "Basic %s" % MotDePasseCode)

#***************************************
#***   Test du lien
#***************************************
TelechargementFichier = False
try:
        UrlOk = urllib2.urlopen(RequetteFichier)
        TelechargementFichier = True
except urllib2.HTTPError, MesErr:
   if MesErr.code == 404:
       MessageErreur = "Fichier non trouvé : Erreur 404 !"
   else:
       MessageErreur = "La requete HTTP(S) a echoue avec le code %d (%s)" % (MesErr.code, MesErr.msg)
except urllib2.URLError, MesErr:
   MessageErreur = "Echec. Cause:", MesErr.reason

#***************************************
#***   Telechargement du lien !
#***************************************
if TelechargementFichier == True:
        try :
                TmpFichier = open("tmp_" + LocalFichier , "wb")
                TailleFichier = int(UrlOk.headers.get('content-length'))
                print "Telechargement du fichier : ", TailleFichier
                print "0-------20--------40--------60--------80-------100"
                I = 0
                F = 0
                Tampon = ''
               
#***************************************
#***   Boucle du Telechargement !
#***************************************
                while True:
                        Tampon = UrlOk.read(4096)
                        I = I + 1
                        if not Tampon: break
                        TmpFichier.write(Tampon)
                        Tampon = None
                       
#***************************************
#***   Affichage de la barre de progression
#***************************************
                        if (((I*4096*100) / TailleFichier) % 2) == 0:
                                if F <> ((I*4096*100) / TailleFichier):
                                        F = ((I*4096*100) / TailleFichier)
                                        sys.stdout.write('.')
                                        sys.stdout.flush()
                print " "
               
#***************************************
#***   Cloture du telechargement
#***************************************
                TmpFichier.flush()
                TmpFichier.close()
                if os.path.isfile(LocalFichier):
                        os.remove(LocalFichier)
                os.rename("tmp_" + LocalFichier, LocalFichier)
                MessageErreur = "Telechargement terminé !"
               
#***************************************
#***   Erreur du telechargement
#***************************************
        except:
                TmpFichier.close()
                os.remove("tmp_" + LocalFichier)
                TelechargementFichier = False
                MessageErreur = "ERREUR Telechargement"

#***************************************
#***   fini !
#***************************************
print MessageErreur

Documents liés
logo DOCUMENT 412Script de telechargement de fichier
Zip - 1.7 ko

Laisser un commentaire à cet article

Ecrire au Webmestre Tous les fils d'information