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 :

Stocker des conditions dans un fichier texte


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut Stocker des conditions dans un fichier texte
    Bonjour à tous,

    Je souhaite intégrer des conditions dans un fichier texte, du type :
    "condition:a=1". Comment récupérer ces fonctions et les tester lors de l'exécution du programme ?
    Récupérer le "a=1" sous une variable string n'est pas un problème, mais c'est uniquement l'exécution. Je croyais que c'était le rôle du lambda, mais apparemment j'ai zappé quelque chose !

    Merci d'avance,

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    S'agit-il de transformer le texte "condition:a=1" en script "condition=lambda a: a == 1"???

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Bonjour wiztricks,

    Non, il s'agit d'exécuter 'a=1'. "Condition" est l'index permettant de retrouver la condition dans le fichier texte, il ne sert donc à rien...

    En gros le principe est de faire un test lorsque le string est "a==1" et de changer une variable lorsque ce même string est "a=1", donc de transformer un string en script !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Désolé, je ne comprends pas ce que vous voulez faire.
    A quoi ressemble le fichier texte?
    Que récupère-t-on dedans?
    Qu'est ce qu'on veut en faire?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Le fichier texte ressemble à une description des étapes et des tests d'un process.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    processus 1
    moteur1=1
    tempo==20
    moteur2=0
     
     
    processus 2
    vanne1=1
    capteurvide==1
    vanne1=0
     
    etc...
    On ira chercher la ligne 1 pour l'exécuter, la ligne 2 sera le test de sortie et la ligne 3 l'action pour la fin du processus.

    Une fonction de recherche extraiera les variables ligne1, ligne2 et ligne 3,
    et le processus s'appliquerait en thread. Je pose les lambda tels que je les ai compris,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    lambda ligne1
    while not ligne2 :
          sleep (0.1)
    lambda ligne3
    Pour le processus 1 cela équivaudrait à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    moteur1=1
    while not tempo==20 :
          sleep (0.1)
    moteur1=0


    En ligne de commande j'ai essayé de telles choses avec lambda mais ca marche pas

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    Je pose les lambda tels que je les ai compris
    Je peux vous dire que vous ne les avez pas compris

    Ce que vous représentez n'a rien à voir avec les threads...

    Il y a sans aucun doute un problème de conception, on ne comprend pas où vous voulez en venir.

    Une fois le concept correctement analysé, vous pouvez l'envoyer en pseudo code sur ce forum.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Je peux vous dire que vous ne les avez pas compris

    Fort possible ! mais ou est-ce que je peux enfin trouver quelque chose qui me les explique bien ?? J'y bataille depuis un bon bout de temps ! Certes je démarre de zéro pointé...

    Mon logiciel est un système de commande d'une fabrique d'aliment à la ferme, que je veux automatiser au max.
    Pour cela j'ai une interface permettant, en ce moment, d'allumer et d'éteindre virtuellement les alimentations de différents produits, la pesée, les capteurs etc...
    Sauf que je veux maintenant automatiser les tâches !
    J'ai donc pensé que le plus simple était de superposer un thread qui lancerait chaque étape de la fabrication, surveillerait la condition de fin de cette étape et réaliserait la fin de chaque étape.

    Exemple d'une étape remplissage :
    1) allumer le système d'alimentation
    2) Attendre jusqu'à l'obtention du poids désiré
    3) éteindre le système d'alimentation

    Sauf que pour pouvoir le paramétrer et le sauvegarder correctement, j'ai pensé qu'un fichier paramètres pourrait stocker ce genre de paramètre : quel relais allumer, quel test de fin...
    C'est pour cela que j'aimerai savoir comment transformer un fichier texte en code.
    Exemple fichier texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    moteur1=1   #action de début
    tempo==20   #test de réalisation
    moteur2=0   #action de fin
    à transformer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    moteur1=1
    while not tempo==20 :
          sleep (0.1)
    moteur1=0
    lors de l'exécution...


    Donc comment, concrètement, on passe d'un string (exemple s='valeur=valeur.souhaitée')
    à l'exécution de la commande
    valeur=valeur.souhaitée

  8. #8
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut
    Bonjour,

    Si tout est simplement séquentiel, un programme comme ceci suffit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import time
    moteur1=1
    time.sleep(20)
    moteur1=0
    Sinon voici une solution qui réalise un contrôle pendant l'attente, les noms de moteurs sont dans un dictionnaire car il faut les créer au fur et à mesure :
    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
    #!/usr/bin/env python
    # -*- coding: iso-8859-15 -*-
    import time
     
    class Pyfarm:
        def __init__(self,nom_fichier):
            self.actionneurs={}
            with open(nom_fichier,"r") as fo:
                for ligne_brut in fo:
                    ligne=ligne_brut.split("#")[0].rstrip()
                    if ligne.count("=")==1:
                        self.affectation(ligne)
                        self.affichage()
                    if "tempo" in ligne:
                        self.tempo(ligne)
     
        def affectation(self,ligne):
            [actionneur,etat]=ligne.split("=")
            self.actionneurs[actionneur]=etat   
     
        def affichage(self):
            for actionneur in self.actionneurs:
                print actionneur+"="+self.actionneurs[actionneur]
     
        def tempo(self,ligne):
            [tempo,duree]=ligne.split("==")
            duree=float(duree)
            debut=time.time()
            while time.time()-debut<duree:
                pass #action de contrôle
            print "attente de",time.time()-debut,"s"
     
     
    p1=Pyfarm("pyfarm.txt")
    avec pyfarm.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    moteur1=1   #action de début
    tempo==2   #test de réalisation
    moteur1=0   #action de fin

  9. #9
    Membre à l'essai
    Homme Profil pro
    Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 39
    Points : 22
    Points
    22
    Par défaut
    Ok merci pour le principe !

    J'espérais qu'il y ait un opérateur qui réalise directement le script, mais je garde le principe de disséquer chaque ligne !

    Merci Alexdevl

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

Discussions similaires

  1. Ecrire & Lire des énumérés dans un fichier Texte
    Par WebPac dans le forum Langage
    Réponses: 8
    Dernier message: 18/06/2008, 10h04
  2. Stocker des jpg dans un fichier
    Par jmjmjm dans le forum Langage
    Réponses: 6
    Dernier message: 10/11/2005, 22h07
  3. Réponses: 3
    Dernier message: 27/06/2005, 16h24
  4. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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