IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Code erreur de ftplib


Sujet :

Réseau/Web Python

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut Code erreur de ftplib
    Bonjour, je travail sur un petit script qui a pour but de récupérer des fichiers sur un ftp tout les x temps. Le problème est que j'ai encore du mal à gérer les codes erreurs (j'ai commencé python en début de semaine).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    	try:
    		connection(ftp.FTP(host, user, password))
    	except ftp.all_errors, err:
    		logger.critical('Erreur de connexion à %s : %s', host, err)
    		error.append('Erreur de connexion à '+host+' : '+str(err))
    		e += 1
    	else:
    		try:
    			connection().cwd(dirsrc+'/c2s')
    		except ftp.all_errors, err:
    			logger.critical('Erreur de changement de répertoire : %s', err)
    			error.append('Erreur de changement de répertoire : '+str(err))
    			e += 1
    		else:
    			try:
    				listing = connection().nlst('commande.*')
    			except ftp.error_temp, err:
    				logger.critical('Pas de fichier à transférer : %s', err)
    				error.append('Pas de fichier à transférer : '+str(err))
    				e += 1
    			else:			
    				for fichier in listing:
    					f = open(fichier, 'wb')
    					try:
    						connection().retrbinary('RETR ' + fichier, f.write)
    					except ftp.error_perm, err:
    						logger.critical('Erreur de téléchargement du fichier '+fichier+' : %s', err)
    						error.append('Erreur de téléchargement du fichier '+fichier+' : '+str(err))
    						e += 1
    					else:
    						try:
    							connection().delete(fichier)
    						except ftp.error_reply, err:
    							logger.critical('Erreur de suppression du fichier '+fichier+' : %s', err)
    							error.append('Erreur de suppression du fichier '+fichier+' : '+str(err))
    							e += 1						
     
    						# Il y eu de fichiers de transférés
    						nbfic += 1
    					f.close
    		connection().quit()
    lorsqu'il fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listing = connection().nlst('commande.*')
    Si il y a des fichiers tout est ok, si il y en a pas il me renvoie l'erreur 450 mais je ne souhaiterais pas que dans le cas d'un 450 qu'il me renvoie une erreur.

    Est-ce que vous avez une idée ?
    Merci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    Bonjour, personne n'a d'idée ?

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mai 2008
    Messages : 227
    Points : 77
    Points
    77
    Par défaut
    J'ai trouvé une solution, c'est peut être pas la plus élégante mais ça marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    	try:
    		connection(ftp.FTP(host, user, password))
    	except ftp.all_errors, err:
    		logger.critical('Erreur de connexion à %s : %s', host, err)
    		error.append('Erreur de connexion à '+host+' : '+str(err))
    		e += 1
    	else:
    		try:
    			connection().cwd(dirsrc+'/c2s')
    		except ftp.all_errors, err:
    			logger.critical('Erreur de changement de répertoire : %s', err)
    			error.append('Erreur de changement de répertoire : '+str(err))
    			e += 1
    		else:
    			try:
    				listing = connection().nlst('commande.*')
    			except ftp.all_errors, err:
    				if(str(err).split(' ')[0] != '450'):
    					logger.critical('Pas de fichier à transférer : %s', err)
    					error.append('Pas de fichier à transférer : '+str(err))
    					e += 1
    			else:			
    				for fichier in listing:
    					f = open(fichier, 'wb')
    					try:
    						connection().retrbinary('RETR ' + fichier, f.write)
    					except ftp.error_perm, err:
    						logger.critical('Erreur de téléchargement du fichier '+fichier+' : %s', err)
    						error.append('Erreur de téléchargement du fichier '+fichier+' : '+str(err))
    						e += 1
    					else:
    						try:
    							connection().delete(fichier)
    						except ftp.error_reply, err:
    							logger.critical('Erreur de suppression du fichier '+fichier+' : %s', err)
    							error.append('Erreur de suppression du fichier '+fichier+' : '+str(err))
    							e += 1						
     
    						# Il y eu de fichiers de transférés
    						nbfic += 1
    					f.close
    		connection().quit()
    Je récupère le code erreur et avec un gros if qui décape je filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    			try:
    				listing = connection().nlst('commande.*')
    			except ftp.all_errors, err:
    				if(str(err).split(' ')[0] != '450'):
    					logger.critical('Pas de fichier à transférer : %s', err)
    					error.append('Pas de fichier à transférer : '+str(err))
    					e += 1
    			else:

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,
    Le code de ftplib remonte les erreurs suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Error(Exception): pass
    class error_reply(Error): pass # unexpected [123]xx reply
    class error_temp(Error): pass # 4xx errors
    class error_perm(Error): pass # 5xx errors
    class error_proto(Error): pass # response does not begin with [1-5]
     
     
    # All exceptions (hopefully) that may be raised here and that aren't
    # (always) programming errors on our side
    all_errors = (Error, IOError, EOFError)
    Sous la forme suivante (j'ai pris une commande courte):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def rename(self, fromname, toname):
        '''Rename a file.'''
         resp = self.sendcmd('RNFR ' + fromname)
         if resp[0] != '3':
             raise error_reply, resp
         return self.voidcmd('RNTO ' + toname)
    Donc vous n'avez pas trop le choix: si vous voulez traiter des cas d'erreur particulier, il faut trier le contenu de resp...

    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mail] récupérer les code erreurs de mail()
    Par Djakisback dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2006, 17h19
  2. [TSQLStoredProc] Comment connaitre le code erreur renvoye ?
    Par kase74 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/08/2005, 11h08
  3. Code erreur 131
    Par taket dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 29/06/2005, 15h43
  4. Codes erreur spécifiques
    Par jibe74 dans le forum Débuter
    Réponses: 3
    Dernier message: 10/12/2004, 11h19
  5. [Kylix] code erreur :-10 :(
    Par maamar dans le forum EDI
    Réponses: 2
    Dernier message: 21/09/2003, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo