Partage
  • Partager sur Facebook
  • Partager sur Twitter

Script récupération de fichier avec date à j-1

    28 novembre 2011 à 12:04:58

    Bonjour,

    Je me suis lancé dans l'apprentissage de python et j'ai trouvé une idée de script à faire. En effet, nous recevons des fihiers type *_datej-1.zip, que nous devons sauvegarder dans un dossier et mettre sur un serveur de partage.

    Donc j'ai réussi à récupérer la date à j-1, que je formates comme dans les noms de mes fichiers par exemple 2011-11-27


    From datetime import *
    yesterday = date.today().strftime('%Y-%m-%d')


    Ensuite je me place dans le bon dossier avec un Chdir, mais viens mon problème. Comment faire pour lui demander de ne sélectionner que les fichiers avec un nom contenant ma variable yesterday ?

    J'ai pensé à utiliser Glob, Glob.glob("*.zip") mais il me faut également intégrer ma variable yesterday, auriez vous une solution à me proposer ?

    Par avance, merci.
    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2011 à 13:16:37

      Salut,

      Ça peut se faire simplement en utilisant l'opérateur + , ou bien avec la méthode format :

      >>> yesterday = '2011-11-27'
      >>> '*_' + yesterday + '.zip'
      '*_2011-11-27.zip'
      >>> '*_{0}.zip'.format(yesterday)
      '*_2011-11-27.zip'
      


      Tu trouveras plus d'infos sur le formatage de chaînes de caractères en Python sur la doc.
      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        28 novembre 2011 à 16:19:43

        Merci pour ta réponse, voici le code ou je suis arrivé :

        from datetime import *
        from os import *
        from glob import *
        from shutil import *
        
        yesterday = (date.today()-timedelta(1)).strftime('%Y-%m-%d')
        name_file = '*_{0}.zip'.format(yesterday)
        source = chdir('D:/test/source')
        liste_file = glob(name_file)
        
        for x in liste_file:
            copy(x, 'D:/test/cible')
            move(x, 'D:/test/cible2')
        


        Sa fonctionne plutôt bien, sa copie dans cible 1 et sa coupe/colle dans cible 2. Si tu as des idées ou remarques pour optimisation je suis preneur.

        Car par exemple, je voudrais faire des vérifications, si les fichiers ont bien été copier ou cut/paste ... si tu as des pistes je suis preneur.

        Merci.
        • Partager sur Facebook
        • Partager sur Twitter
          7 décembre 2011 à 15:43:19

          Bonjour,

          Un petit up du topic avec le code ou j'en suis :

          #!/usr/bin/python
          # -*- coding: latin-1 -* 
           
          ### Importation des modules nécessaires ###
           
          import os
          import glob
          import datetime
          import shutil
           
          ### Récupération date j-1 et formatage ###
           
          date_nametrace = (datetime.date.today()-datetime.timedelta(1)).strftime('%Y-%m-%d') # date à J-1 et formatage pour le nom des fichiers #
          name_file = '*_{0}.zip'.format(date_nametrace) # création du nom des fichiers #
          today_year = datetime.date.today().strftime('%Y') # Pour nom du dossier (année) #
          today_yearmonth = (datetime.date.today()-datetime.timedelta(1)).strftime('%Y-%m') # Pour nom du dossier (année + mois) #
          today_daymonthyear = (datetime.date.today()-datetime.timedelta(1)).strftime('%d-%m-%Y') # Pour nom du dossier (jours + année + mois) #
           
          ### Définition répertoire source et arrivé N2C ###
           
          source_n2c = os.path.join("*******","N2","N2C") 
          dest_n2c = os.path.join("*******","N2","N2C",today_year,today_yearmonth,today_daymonthyear)
          dest_n2c_partage = os.path.join("*****","N2",today_yearmonth,today_daymonthyear)
           
          ### Transfert traces N2C ###
           
          if os.path.isdir(source_n2c): # Vérification de l'existance du dossier #
          		os.chdir(source_n2c) # Placement dans le bon dossier #
          		print('Nous sommes dans : {0}'.format(os.getcwd())) # Indique le dossier dans lequel nous sommes #
          		list_trace_n2c = glob.glob(name_file) # Enregistrement des fichiers dans une liste pour opération #
          		print('Nombre de traces : ', len(list_trace_n2c))
          		for x in list_trace_n2c: 
          			if os.path.isfile(x): # Si fichier exist #
          				shutil.copy(x, dest_n2c) # Copi de celui ci dans le dossier sur le ******** #
          				shutil.move(x, dest_n2c_partage) # Cut de celui ci dans le dossier de partage #
          				print('Le fichier {0} à été transféré'.format(x))
          			else:
          				print('Il n\'y a pas de fichier trace')
          else:
          	print('Ce dossier n\'existe pas')
           
          ### Définition répertoire source et arrivé N2M ###	
           
          source_n2m = os.path.join("************","N2","N2M")
          dest_n2m = os.path.join("*************","N2","N2M",today_year,today_yearmonth,today_daymonthyear)
          dest_n2m_partage = os.path.join("***********","N2M",today_yearmonth,today_daymonthyear)
           
          ### Transfert traces N2M ###
           
          if os.path.isdir(source_n2m):
          	os.chdir(source_n2m)
          	print('Nous sommes dans : {0}'.format(os.getcwd()))
          	list_trace_n2m = glob.glob(name_file)
          	print('Nombre de traces : ', len(list_trace_n2m))
          	for x in list_trace_n2m:
          		if os.path.isfile(x):
          			shutil.copy(x, dest_n2m)
          			shutil.move(x, dest_n2m_partage)
          			print('Le fichier {0} à été transféré'.format(x))
          		else:
          			print('Il n\'y a pas de fichier trace')
          else:
          	print('Ce dossier n\'existe pas')
          


          Je bloques sur un point, c'est à dire au moment où il fait la copie des fichiers, j'aimerais pouvoir tester celà, à savoir si la copie à bien eu lieu ... quelqu'un aurait il une idée ?
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            7 décembre 2011 à 16:05:07

            Avec un try-except

            try:
                shutil.copy(x, dest_n2m)
                shutil.move(x, dest_n2m_partage)
            except IOError:
                print('Copie impossible')
            


            Si tu le souhaites tu peux créer une journalisation de ton travail à l'aide du module logging

            • Partager sur Facebook
            • Partager sur Twitter

            Script récupération de fichier avec date à j-1

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown