Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cacule de temps

    28 juillet 2010 à 11:51:48

    Bonjour j'ai un fichier texte avec dedans sur chaque ligne un temps

    exemple du fichier txt:

    [Tue Jul 27 20:31:22 2010]
    [Tue Jul 27 20:31:39 2010]
    [Tue Jul 27 20:31:44 2010]
    [Tue Jul 27 20:31:54 2010]
    [Tue Jul 27 20:32:25 2010]
    [Tue Jul 27 20:32:31 2010]
    [Tue Jul 27 20:32:32 2010]
    [Tue Jul 27 20:33:04 2010]

    J'aimerai calculer et afficher le temps entre chaque ligne et afficher le totale du temps.

    exemple :

    0
    17
    5
    10
    31
    6
    1
    32

    totale: 95

    Tous sa de préférence en expression régulière, mais je débute en python et je suis assez perdu... :?

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 juillet 2010 à 11:56:52

      En expression régulière o_O

      Tu pourrais être plus précis? Pour quoi faire?

      Sinon j'ai une solution pour chaque si j'ai bien compris.

      >>> temps=[0, 17, 5, 10, 31, 6, 1, 32]
      >>> total_temps=sum(temps)
      >>> print total_temps
      102
      >>> for i in range(len(temps)-1):
              print abs(temps[i]-temps[i+1])
      
              
      17
      12
      5
      21
      25
      5
      31


      Ah et pour le re, je viens de comprendre, tu veux parser ton fichier texte

      >>> import re
      >>> texte
      '[Tue Jul 27 20:31:22 2010]\n[Tue Jul 27 20:31:39 2010]\n[Tue Jul 27 20:31:44 2010]\n[Tue Jul 27 20:31:54 2010]\n[Tue Jul 27 20:32:25 2010]\n[Tue Jul 27 20:32:31 2010]\n[Tue Jul 27 20:32:32 2010]\n[Tue Jul 27 20:33:04 2010]'
      >>> temps=re.findall('\d\d:\d\d:\d\d', texte)
      >>> temps
      ['20:31:22', '20:31:39', '20:31:44', '20:31:54', '20:32:25', '20:32:31', '20:32:32', '20:33:04']
      • Partager sur Facebook
      • Partager sur Twitter
        28 juillet 2010 à 12:06:16

        Tu trouveras ton bonheur pour la lecture des fichiers en Python ici !
        Ensuite pour découper tes chaines il y a la méthode split() sur une chaine de caractères :
        >>> msg = "cou-cou-ca-va"
        >>> msg.split("-")
        ['cou', 'cou', 'ca', 'va']
        >>> msg = "comprend-tu comment ca fonctionne ?"
        >>> msg.split(" ")
        ['comprend-tu', 'comment', 'ca', 'fonctionne', '?']
        

        (La méthode split(separateur) retourne la liste des éléments qui sont séparés par la chaine passée en paramètre)

        Tout ça c'est pour la récupération des données.
        Après pour le reste, tu calcules le nombre total de secondes puis tu le reconvertis en années, mois, jour, etc. par divisions successives. (c'est pour éviter d'avoir un truc du genre 1 jour 25heures 65minutes)
        • Partager sur Facebook
        • Partager sur Twitter
          28 juillet 2010 à 13:54:13

          Voilà une solution "simple" utilisant la classe datetime :

          >>> from datetime import datetime
          >>> date_format = '[%a %b %d %H:%M:%S %Y]'
          >>> dates
          ['[Tue Jul 27 20:31:22 2010]', '[Tue Jul 27 20:31:39 2010]', '[Tue Jul 27 20:31:44 2010]', '[Tue Jul 27 20:31:54 2010]', '[Tue Jul 27 20:32:25 2010]', '[Tue Jul 27 20:32:31 2010]', '[Tue Jul 27 20:32:32 2010]', '[Tue Jul 27 20:33:04 2010]']
          >>> dates = [datetime.strptime(d, date_format) for d in dates]
          >>> for idx in range(1,len(dates)):
          ...     print dates[idx] - dates[idx-1]
          ... 
          0:00:17
          0:00:05
          0:00:10
          0:00:31
          0:00:06
          0:00:01
          0:00:32
          
          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !

          Cacule de temps

          × 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