[python] récupérer la date

Résolu
Bonjour,
j'ai un projet à rendre bientôt en python.

Je cherche la fonction la plus simple du module le plus simple pour afficher la date et l'heure la plus simple (en string)

j'aimerai qqch du type : "11/05/04 17:28"

Quelqu'un peut-il m'aider ?

42 réponses

Résumé de la discussion

Le besoin porte sur afficher une date et une heure au format 'jj/mm/aa hh:mm' en Python, sous forme de chaîne, de manière simple et fiable. Une solution courante consiste à utiliser time.strftime avec time.localtime, par exemple time.strftime('%d/%m/%y %H:%M', time.localtime()), qui permet un formatage rapide et flexible et s'adapte au fuseau horaire local. D'autres explications précisent que les codes entre guillemets (%Y, %m, %d, %H, %M) définissent le format et que l'on peut obtenir des variantes comme 'Jour/Mois/Année Heure:Minute' grâce à time.strftime. En cas de besoins plus avancés, la bibliothèque datetime offre datetime.now().strftime('%d/%m/%y %H:%M') et permet, via des modules comme pytz, de gérer les fuseaux horaires de manière plus précise.

Bobot (l’IA à votre service)
  1. Modérateur
    import time
    print time.strftime('%d/%m/%y %H:%M',time.localtime())  

    strfrtime te permet de formatter la date comme bon te semble.

    Voir http://www.python.org/doc/2.1.3/lib/module-time.html#l2h-1299
    1. je te remercie
      la fonction est vraiment très simple d'utilisation

      je n'ai plus besoin de ce que j'avais écrit avant avec le module datetime mais j'aimerais bien savoir toutefois à quoi servent ces paramètres
  2. bonjour,
    je voudrais savoir si on peut faire appel à des programmes en python dans un autre programme python. par exemple j'ai mes deux programmes programme1.py et programme2.py et je souhaiterais que programme1.py fait appel à programme2.py.
    merci
    1. Modérateur
      oui c'est possible.

      Exemple: On a créer un programme a.py qui appelle une fonction contenue dans b.py

      b.py:
      #!/usr/bin/python
      def essai():
          return "coucou"


      a.py:
      #!/usr/bin/python
      import b
      print b.essai()
      


      Et on appelle a.py:
      #python a.py
      coucou


      Tu notera qu'un fichier b.pyc est apparu: C'est la version pseudo-compilée de b.
    2. j'ai essayé avec ça mais ça me renvoie:
      ImportError: No module named b
    3. Modérateur
      Ton fichier b.py est-il dans le même répertoire que a.py ?
      Quand tu lance a.py, est-ce que le répertoire courant est bien celui où a.py et b.py sont situés ?
  3. en effet, je voudrais savoir s'il est possible en PYTHON de positionner un indicateur ou autre pour récupérer ces erreurs au niveau DCL (VMS).
    Merci
    1. Modérateur
      L'objet de type rdb._rdb_exceptions.Error doit avoir des attributs (typiquement: code et message).
    2. normalement en cas d'erreur le module rdb lève une exception qui contient le message (entre autres choses). donc je cherche à savoir si on peut récupérer ses erreurs au niveau DCL (VMS) de telle façon à ce que quand on aurait une erreur notre traitement peut être arrêté et on disposeras d'une sorte de journal qui contient les erreurs.
    3. Modérateur
      Ah là désolé je ne connais pas du tout VMS.
    4. en tout cas merci pour toutes ses informations.
  4. j'obtiens cet erreur quelqu'un saurait la cause et merci :

    rdb._rdb_exceptions.Error: (-1, '%RDB-F-SYS_REQUEST, error from system services request\r\n-RDMS-F-DBNOTOPEN,

    database is not open for access', 'RR000')
    1. Modérateur
      On dirait que la connexion à ta base de données n'est pas ouverte.
  5. j'arrive pas à utiliser la balise
    le code est composé de deux if

    var3 =''
    #bloc1
    if ( var1 >= 4 and var2 == 1):
    #bloc 2
    if var3 == '':
    #bloc3
    var4 = 'machin'
    var5 = 1
    fonction()
  6. j'ai un problème avec mon programme au niveau des conditions:
    voici un bout du pg:
    var3 =''
    if ( var1 >= 4 and var2 == 1):
    if var3 == '':
    var4 = 'machin'
    var5 = 1
    fonction()

    ce qui serait normale c'est que mon programme n'entre pas dans cette boucle car la 1ère condition n'est pas satisfaite cependant mon programme entre dans cette boucle et je ne vois pas pourquoi??
    1. Modérateur
      Utilise la balise code CCM pour mettre ton source, sinon ça ne respecte par les espaces et on ne comprend rien au source.
  7. par ailleurs j'ai une autre question concernant le fait de travailler avec des colonnes variables est ce que c'est possible de faire pareil
    1. Modérateur
      oui.
      Tu veux dire des fichiers à séparateurs, genre CSV ?
    2. pas vraiement des fichiers CSV c'est juste que j'ai des données à mettre dans mon fichier au fur et à mesure donc làa ce j'ai fait c'est renseigner les lignes une par une c'est un peu long mais jusqu'à la ça fait l'affaire :).
  8. vous pouvez me donner un exemple. merci
    1. Modérateur
      Voilà un exemple plus complet:
      data = [
                { 'prenom':'john', 'nom':'doe','pays':'Grande-bretagne'},
                { 'prenom':'Jean', 'nom':'Dupont','pays':'France'},
                { 'prenom':'Johnny', 'nom':'Mnemonic','pays':'Etats-Unis'},
             ]
      
      f = open("fichier.txt","w")
      
      for enregistrement in data:
          ligne = "%(prenom)-10s  %(nom)-10s  %(pays)-16s" % enregistrement     
          f.write(ligne+"\n")
      
      f.close()


      Et voici le fichier produit:

      john        doe         Grande-bretagne 
      Jean        Dupont      France          
      Johnny      Mnemonic    Etats-Unis      
      


      Si tu veux utiliser de simples listes (ou tuples) au lieu de dictionnaire, ça serait:
      data = [
                ('john','doe','Grande-bretagne'),
                ('Jean','Dupont','France'),
                ('Johnny','Mnemonic','Etats-Unis')
             ]
      
      f = open("fichier2.txt","w")
      
      for enregistrement in data:
          ligne = "%-10s  %-10s  %-16s" % enregistrement     
          f.write(ligne+"\n")
      
      f.close()
  9. on peut les écrire dans un fichier ???
    1. Modérateur
      Sans problème ! C'est une simple chaîne de caractères.
  10. les "report file" c'est comme des fichiers rapport ou l'on écrit des informations relatives à notre traitement ceci est un exemple en Cobol:
    01 DetailLine TYPE IS DETAIL.
    02 LINE IS PLUS 1.
    03 COLUMN 1 PIC X(9)
    SOURCE CityName(CityCode) GROUP INDICATE.
    03 COLUMN 15 PIC 9
    SOURCE SalesPersonNum GROUP INDICATE.
    03 COLUMN 25 PIC $$,$$$.99 SOURCE ValueOfSale.

    on peut dire que ces des fichiers générés par étage.
    1. Modérateur
      Je vois: en gros un fichier texte à colonnes fixes, avec des séparateurs par section.

      ça peut se faire avec des chaînes formatées.

      Exemple:
      data = ('john','doe','France')
      ligne = "%10s  %10s  %12s" % data
      print ligne


      %10s veut dire: formatter la chaîne sur 10 caractères.

      On peut aussi utiliser des dictionnaires (c'est plus facile pour interchanger des éléments dans la ligne en sortie):
      data = { 'prenom':'john', 'nom':'doe','pays':'France'}
      ligne = "%(prenom)10s  %(nom)10s  %(pays)12s" % data
      print ligne
  11. bonjour,
    j'ai une question à propos des "report file". je voulais savoir s'il existe un module en python équivalent au report writer Cobol qui nous permet de générer ce genre de fichiers.
    1. Modérateur
      Euh... ça fait trop longtemps que ne j'ai plus fait de Cobol.
      ça ressemble à quoi ces report files ?
  12. j'ai essayé de le faire avec une requête SQL:

    sql = rdb.Statement ("declare alias filename 'base_de_donne' ")
    sql.execute()

    mais ça me met %SQL-F-SYNTAX_ERR, Syntax error dans ma requête
    1. Modérateur
      declare alias filename... c'est sûrement un truc spécific à ta base de données. Désolé je ne sais pas.
  13. je travaille sous VMS et je ne vois pas trop comment déclarer mes alias avec python et pour ce qui est des connexions aux bases est ce que à ce moment là je devrais utilisé que les alias.
    Exemple:
    rdb.attachDB('monalias')
    mais reste aussi à savoir comment le déclarer l'alias
    merci,
    1. non je souhaiterais déclarer des alias de bases de données pour pouvoir utiliser plusieurs base de données dans le même programme
      1. Modérateur
        Il suffit d'ouvrir plusieurs connexions aux bases.

        Ensuite la déclaration des alias au niveau de l'OS, ça dépend de ton OS.
    2. bonjour,
      j'aimerais savoir comment on peut utiliser des alias avec python et quel module inclure.
      merci
      1. Modérateur
        Des alias de quoi ? De fichiers ?
    3. bonjour
      j'ai un fichier en entrée et je souhaite affecter les données qui y sont dans les éléments d'une structure. j'ai pensé à lire mon fichier ligne par ligne et utilisé un parser mais ça ne marche pas . y a t il une autre façon de faire
      merci
      voila ce que j'avais fait:
      while 1 :
      r = os.read(fi,347)
      if r == '' :
      break
      c = Rec.parse(r)
      1. Modérateur
        Quelle est la structure de ton fichier ?
        CSV ? colonnes fixes ? autre ?
        Ma réponse dépendra du format du fichier
        (par exemple pour le CSV il y a un module spécialisé.)
    4. oula ça m'a l'air un peu compliqué de plus que moi je travaille sous VMS donc ça ne m'aideras pas beaucoup. en tout cas merci pour tes réponses rapides et précises :) .
      1. donc si j'ai bien compris y a pas quelque chose du genre monprogramme.exe le fichier mon programme.py est interpreté sans retourner un fichier .exe
        1. Modérateur
          C'est ça.

          Sous Windows il y a plus ou moins moyen de créer un .exe, mais ça reste de la bidouille (ça consiste à mettre l'interpréteur python et le .py dans un .exe auto-extractible).
      • 1
      • 2
      • 3