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 :

Date de la dernière modification d'un fichier


Sujet :

Python

  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Date de la dernière modification d'un fichier
    Bonjour,
    je souhaiterais avoir sous la forme AAAAMMJJ-HHMMSS le moment de la dernière modification d'un fichier. Comment faire ?

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Deux indices:
    datetime
    os.stat

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Ok je suis en train de regarder cela.

  4. #4
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Voilà une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lastModification = time.ctime(os.stat(pathOfTheFile).st_mtime)
    lastModification = time.strptime(lastModification, "%a %b %d %H:%M:%S %Y")
    lastModification = time.strftime("%Y%m%d-%H%M%S", lastModification)
    Il y a peut être plus efficace ou plus simple. Si c'est le cas, je suis preneur.

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    J'utilise cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import os
    import time
     
    nfc = r"C:\Python26\Python.exe"
     
    nbs = os.path.getmtime(nfc)
     
    print nbs
    # affiche: 1239741770.0 = nb de secondes depuis l'epoch (date de référence dépend des OS.
     
    print time.strftime("%d/%m/%Y-%H:%M:%S",time.gmtime(nbs))
    # affiche: 14/04/2009-20:42:50
    Tyrtamos

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    C'est plus concis effectivement. Merci.

    En fait cela ne fonctionne pas chez moi. Merci quand même.

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Pardon mais perso j'utilise [ST_ATIME] et [ST_MTIME] pour les dates...
    Pas bon ?
    Pourtant avec (asctime(localtime(montruc[ST_ATIME]))) et un def de conversion cela donne un :


  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    En clair, c'est à dire en code, cela donne... montruc est-il un objet fichier ?

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Non, c'est le retour d'un os.stat sur un fichier ou dossier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> montruc = os.stat('test.c')
    >>> print montruc
    posix.stat_result(st_mode=33261, st_ino=1791459L, st_dev=2050L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=210L, st_atime=1253428547, st_mtime=1183884292, st_ctime=1253428546)
    >>>
    Tu y retrouve les infos que tu traite avec asctime/localtime sur le st_atime du tuple.

    Le résultat est a mettre dans l'ordre que tu recherche. Dans mon cas :

    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
            def ConvDateInfAcc(InfAcc):
                if InfAcc[0:3] == 'Mon': AccesDate = 'Lundi ' + InfAcc[8:10]
                elif InfAcc[0:3] == 'Tue': AccesDate = 'Mardi ' + InfAcc[8:10]
                elif InfAcc[0:3] == 'Wed': AccesDate = 'Mercredi ' + InfAcc[8:10]
                elif InfAcc[0:3] == 'Thu': AccesDate = 'Jeudi ' + InfAcc[8:10]
                elif InfAcc[0:3] == 'Fri': AccesDate = 'Vendredi ' + InfAcc[8:10]
                elif InfAcc[0:3] == 'Sat': AccesDate = 'Samedi ' + InfAcc[8:10]
                elif InfAcc[0:3] == 'Sun': AccesDate = 'Dimanche ' + InfAcc[8:10]
                else: AccesDate = 'Erreur'
                if InfAcc[4:7] == 'Jan':
                    AccesDate = AccesDate + ' Janvier ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Feb':
                    AccesDate = AccesDate + u' Février ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Mar':
                    AccesDate = AccesDate + ' Mars ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Apr':
                    AccesDate = AccesDate + ' Avril ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'May':
                    AccesDate = AccesDate + ' Mai ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Jun':
                    AccesDate = AccesDate + ' Juin ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Jul':
                    AccesDate = AccesDate + ' Juillet ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Aug':
                    AccesDate = AccesDate + ' Aout ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Sep':
                    AccesDate = AccesDate + ' Septembre ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Oct':
                    AccesDate = AccesDate + ' Octobre ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Nov':
                    AccesDate = AccesDate + ' Novembre ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                elif InfAcc[4:7] == 'Dec':
                    AccesDate = AccesDate + u' Décembre ' + InfAcc[20:24] + u' à ' + InfAcc[11:19]
                else: AccesDate = 'Erreur'
                return AccesDate
    Cela reviens à ton os.stat(pathOfTheFile).st_mtime mais j'utilise asctime/localtime.

    @+

    Petit edit : st_mtime et non st_atime bien sur... J'utilise les deux d'où mon erreur.

  10. #10
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Euaaaah, ce code pique les yeux...

    Utilise un dictionnaire pour faire la traduction entre version anglaise et celle que tu veux afficher. D'ailleurs ce serait plus propre de faire avec le numéro des mois: sait-on jamais qu'un jour il te sorte déjà les mois en français...

  11. #11
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Ma méthode s'occupe de tout il me semble donc pour le coup je ne vois pas trop l'utilité d'aller mettre les mains dans le cambouis comme l'a fait PauseKawa. Cela évite de perdre du temps et permet de boire encore plus de café...

  12. #12
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 065
    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 : 4 065
    Par défaut
    Parce-qu'il y a celle là aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os, time
    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(fichier)
    print "derniere modif: %s" % time.ctime(mtime)
    C'est tout!

    Après c'est du split et du dico

  13. #13
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par rambc Voir le message
    Voilà une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lastModification = time.ctime(os.stat(pathOfTheFile).st_mtime)
    lastModification = time.strptime(lastModification, "%a %b %d %H:%M:%S %Y")
    lastModification = time.strftime("%Y%m%d-%H%M%S", lastModification)
    Il y a peut être plus efficace ou plus simple. Si c'est le cas, je suis preneur.

  14. #14
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 065
    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 : 4 065
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import os, time
    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(fichier)
    a=time.ctime(mtime).split(); b=[]
    b.append(a[4]); b.append(a[1]); b.append(a[0]); b.append(a[3])
    print b
    donne un truc du genre : ['2009', 'Oct', 'Wed', '14:16:41']

  15. #15
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Euaaaah, ce code pique les yeux...

    Utilise un dictionnaire pour faire la traduction entre version anglaise et celle que tu veux afficher. D'ailleurs ce serait plus propre de faire avec le numéro des mois: sait-on jamais qu'un jour il te sorte déjà les mois en français...
    J'adore les posts d'Antoine_935
    C'est vrais que c'est un copier/coller d'un truc pondu il y a un peut plus d'un mois (mes débuts en Python...) et qu'à l'époque je n'utilisait pas les dico (depuis trop...). Mais bon, pas de honte puisque qu'en tant que néophyte autodidacte j'avais trouver une solution.
    Par contre c'est vrais que c'est moche

    Citation Envoyé par rambc Voir le message
    Ma méthode s'occupe de tout il me semble donc pour le coup je ne vois pas trop l'utilité d'aller mettre les mains dans le cambouis comme l'a fait PauseKawa. Cela évite de perdre du temps et permet de boire encore plus de café...
    C'est la différence entre un pro et quelqu'un sans formation préalable, la pause café.
    Mon 'intrusion' n'avais pas pour but de te trouver une solution (tu n'as pas besoin de moi) mais de savoir si j'étais dans le bon et cela dans le même sens que ton sujet.

    Citation Envoyé par PauseKawa Voir le message
    Pardon mais perso j'utilise [ST_ATIME] et [ST_MTIME] pour les dates...
    Pas bon ?
    Ceci dit je vais regarder les différentes réponses et en apprendre plus (comme toujours sur ce forum )

    Merci à tous

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7
    Par défaut
    juste pour faire avancer le schmilblick sur cette vieille discussion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import os, time
    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(fichier)
    time.strftime("%Y%m%d-%H%M%S", time.gmtime(mtime)) #donne le format AAAAMMJJ-HHMMSS

  17. #17
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'utilise de plus en plus l'édition des temps en format "ISO 8601" (https://fr.wikipedia.org/wiki/ISO_8601), ce qui a l'avantage de l'universalité, et donc de faciliter les échanges entre logiciels.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import os
    from datetime import datetime
     
    tm = os.path.getmtime(r"C:\Python27\Python.exe")
     
    print datetime.fromtimestamp(tm).isoformat()
    2013-05-15T22:43:44
    On peut remplacer le 'T' qui se trouve entre la date et l'heure par un autre caractère ('_', espace, ...): il suffit de le mettre en argument à "isoformat". On peut aussi, bien entendu, utiliser un slash pour la date au lieu du tiret avec la méthode "replace":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print datetime.fromtimestamp(tm).isoformat('_').replace('-', '/')
    2013/05/15_22:43:44
    Cette méthode est intéressante, parce le temps reste lisible par un être humain (plus que le nombre de secondes depuis le 1/1/1970 ), et que l'ordre alphabétique est le même que l'ordre chronologique. Par exemple, il peut être intéressant de stocker ainsi des temps sous forme de chaines dans une base de données dans sqlite3.

  18. #18
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 065
    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 : 4 065
    Par défaut
    juste pour faire avancer le schmilblick sur cette vieille discussion :
    Cette solution a déjà été proposée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/12/2012, 21h25
  2. [PB 9 -> PB 11] Date de dernière modification d'un fichier
    Par hicks51100 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 27/06/2008, 15h26
  3. Connaître la date de dernière modification d'un fichier
    Par Olivier Regnier dans le forum Web
    Réponses: 9
    Dernier message: 08/11/2007, 15h34
  4. Date de dernière modification d'un fichier
    Par defacta dans le forum Langage
    Réponses: 1
    Dernier message: 04/09/2007, 13h10
  5. [FTP] date dernière modif d'1 fichier distant
    Par renaudjuif dans le forum Langage
    Réponses: 1
    Dernier message: 24/09/2006, 01h24

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