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 :

Incrementation Journal *.Log


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut Incrementation Journal *.Log
    Bonjour,

    Je cherche à faire un suivi permanent d'un dossier en listant son contenu dans un fichier journal *.log.

    Voici le début de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #!/usr/bin/env python
    #-*- encoding: utf-8 -*-
    import os
    list = os.listdir('D:\FORMATIONS\\')
    open('journal.log','w').write(str(list))
    ce que je souhaiterai faire est :
    "scanner" en permanence le dossier pour déceler tous mouvements.
    Incrémenter la liste des fichiers à la ligne dans mon journal avec date et hh:mm:ss lors de l'ajout ou la suppression de nouveaux fichiers avec un indicateur d'état "Ajout" - "Suppression".

    pouvez vous m'aider.

    En vous remerciant par avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Hello,

    Quelque chose dans le genre :
    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
     
    import os
    import time
     
     
    #méthode log bateau, pour l'exemple
    def log(file_list, mode)
    	for x in file_list:
    		mtime = os.stat(x).st_mtime
    		str_time = time.strftime('%H:%M:%S', time.gmtime(mtime))
    		print '{0} - {1} - {2}'.format(str_time, mode, x)
     
    prev_scan = []
    continue = True
     
    while continue:
    	#créer ou reinitialiser la liste des fichiers modifiés
    	files_added = []
    	files_removed = []
    	cur_scan = os.listdir('monDossier')
    	if not cur_scan == prev_scan:
    		files_added = [x for x in cur_scan if x not in prev_scan]
    		files_removed = [x for x in prev_scan if x not in cur_scan]
    	log(files_added, 'ajout')
    	log(files_removed, 'suppression')	
     
    	prev_scan = cur_scan
    	#fait une pose de 5 sec
    	time.sleep(5)
    Attention : Non testé. Si ça marche pas ou que tu comprends pas tout, y'a qu'à dire.

    Y'a plus qu'à adapter pour écrire tout ça dans le fichier log (non parce qu'on va pas faire tout le boulot quand même )

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Par défaut
    il semblerait que ce soit effectivement une réponse à mes attentes
    mais j'ai une erreur de syntaxe au niveau du def log() manquait ":"
    Mais il me reste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Traceback (most recent call last):
      File "C:\xx\xx\xx\txx\listing.py", line 4, in <module>
        from listing0.py import *
      File "C:\xx\xx\xx\txx\listing0.py", line 25, in <module>
        log(files_added, 'ajout')
      File "C:\xx\xx\xx\txx\listing0.py", line 9, in log
        mtime = os.stat(x).st_mtime
    WindowsError: [Error 2] Le fichier spécifié est introuvable: '1er novembre.xls'
    listing0.py etant votre morceau de code ...

    Une idée ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    En effet, la fonction log que je t'ai fourni a besoin du path complet pour chaque fichier afin d'y accéder pour en récupérer les stats, et les listes ne contiennent que le nom des fichiers.

    Il est donc nécessaire de compléter ces noms de fichiers

    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def log(file_list, mode):
    	for x in file_list:
    		mtime = os.stat(os.path.join('monDossier', x)).st_mtime
    		str_time = time.strftime('%H:%M:%S', time.gmtime(mtime))
    		print '{0} - {1} - {2}'.format(str_time, mode, x)

Discussions similaires

  1. [ASE]Remplissage du journal de log ?
    Par arona dans le forum Sybase
    Réponses: 17
    Dernier message: 04/07/2007, 15h59
  2. Réponses: 5
    Dernier message: 11/02/2007, 23h06
  3. [REDO LOG] Comment vider le journal de transaction
    Par vsavoir dans le forum Oracle
    Réponses: 4
    Dernier message: 02/01/2006, 23h27
  4. Réponses: 1
    Dernier message: 29/11/2005, 14h01
  5. Supprimer journal de log en SQL
    Par David K. dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 24/07/2003, 08h35

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