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

Python Discussion :

Script demande optimisation


Sujet :

Python

  1. #41
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Le truc bizarre, c'est que j'ai utilisé mes scripts pour effectué le transfert aujourd'hui, donc sans return et sa a marché sans bronché ...
    En gros là j'ai mes deux scripts (TransfertN2.py et TransfertN3.py), je lances chaque qui fait son boulot, mais aucun n'a de dans ses fonctions return.

    Pour le code avec le for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for file in lfile:
        print(lfile[file])
    -> TypeError: list indices must be integers, not str
    Donc pour l'utiliser il aurait fallu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for file in lfile:
        print(str(lfile[file]))
    J'ai opté pour le range(len(lfile))

    Voici le script TransfertN3 :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    # -*- coding: latin-1 -*
     
    '''
    Created on 22 févr. 2012
     
    @author: BUENOO
    '''
     
    from datetime import date, timedelta
    import os, fnmatch, shutil
     
    class TransfertN3:
        """Classe pour le transfert des traces N3. Création des chemins nécessaire et transfert des traces, de j-1 à j-3"""
     
        def __init__(self):
            "Fonction d'initialisation de la classe"
            self.host = 'servdata1'
            self.trace = r'\section MI\TCM\Traces\N3'
            self.src = r'\\{0}{1}'.format(self.host, self.trace)
     
        def datetrace(self):
            "Fonction qui récupère les dates"
            delta = timedelta(days=1)
            self.t = []        
            [self.t.append((self.t[-1] if i != 0 else date.today()) - delta) for i in range(3)]
     
        def nameFile(self):
            "Fonction qui définit les noms des fichiers à récupérer"
            self.nameFile = ['*_{0}.zip'.format(x) for x in self.t]
     
        def pathDest(self):
            "Fonction qui définit les chemins de destination et les crées si besoin"
            self.dest = []
            self.dest = [os.path.join(self.src, *str(x).split("-")) for x in self.t]
            [print('Le chemin existe déjà') if os.path.exists(x) != 0 else os.makedirs(x) for x in self.dest]
     
        def copieTrace(self):
            "Fonction qui copie les traces de la source vers la destination"
            self.lfile = os.listdir(self.src)
            count = 0
            for file in range(len(self.lfile)):
                filet = os.path.join(self.src, self.lfile[file])            
                if fnmatch.fnmatch(self.lfile[file], self.nameFile[0]):
                    try:
                        print('Copie en cours de ', self.lfile[file])
                        shutil.move(filet, self.dest[0])
                        count = 1
                    except:
                        print('Copie de ', self.lfile[file], ' impossible')               
                if fnmatch.fnmatch(self.lfile[file], self.nameFile[1]):
                    try:
                        print('Copie en cours de ', self.lfile[file])
                        shutil.move(filet, self.dest[1])
                        count = 1
                    except:
                        print('Copie de ', self.lfile[file], ' impossible')            
                if fnmatch.fnmatch(self.lfile[file], self.nameFile[2]):
                    try:
                        print('Copie en cours de ', self.lfile[file])
                        shutil.move(filet, self.dest[2])
                        count = 1
                    except:
                        print('Copie de ', self.lfile[file], ' impossible')
            if count == 0:
                print("Aucune trace n'est présente")
     
        def showpath(self):
            "Fonction d'aide pour le devellopement, pour l'utiliser indiquer x.showpath()"
            print('Host :', self.host, 'Trace :', self.trace, 'Source :', self.src)
            print('Date j-1 :', self.t[0], 'Date j-2 :', self.t[1], 'Date j-3 :', self.t[2])
            print('NameFile1 :', self.nameFile[0], 'NameFile2 :', self.nameFile[1], 'NameFile3 :', self.nameFile[2])
            print('Dest1 :', self.dest[0], 'Dest2 :', self.dest[1], 'Dest3 :', self.dest[2])
     
    x = TransfertN3()
    x.datetrace()
    x.nameFile()
    x.pathDest()
    x.copieTrace()
    #x.showpath()
     
    y = input('Le transfert des traces N3 est terminé, appuyez sur une touche pour quitter.')
    Explication des fonctions :
    - datetrace : Récupère les dates de j-1 à j-3 et les mets dans une liste self.t
    - nameFile : Définit comment sont nommé les fichiers, de j-1 à j-3 et les met dans la liste self.nameFile
    - pathDest : Ici je définit les chemins de sauvegarde de j-1 à j-3, les places dans une liste que j'utilises pour créer les dossiers si besoin.
    - copieTrace : Alors ici, lfile contient la liste des fichiers présent dans la source. Après je la parcours, je créé par avance le chemin nécessaire pour shutil avec filet, je vérifies avec fnmatch si le fichier correspond bien à ma nommenclature de nameFile puis il fait la copie en fonction.

  2. #42
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 912
    Points : 7 295
    Points
    7 295
    Par défaut
    Mon dieu, faut revoir les bases

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for file in lfile:
        print(file)
    Le but était de ne pas travailler avec les index car pas obligatoire dans ton cas.

    Sinon il aurait mieux valu utiliser enumerate.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for index, _ in enumerate(lfile):
        print(lfile[index])

  3. #43
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Re

    Alors je viens de regarder ... j'étais persuadé que sa marchait pas ici je ne sais plus pourquoi ... surement une version précédente ou j'avais procédé différemment ... Je modifie sa thanks

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. demande optimisation si possible
    Par android32 dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 04/01/2013, 14h54
  3. demande de conseil pour optimiser mon script
    Par seb.garcia dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/05/2011, 16h03
  4. script a optimiser
    Par croc14 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 05/02/2009, 18h59
  5. script: demande d'aide
    Par imeys dans le forum Windows
    Réponses: 11
    Dernier message: 12/05/2006, 16h41

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