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 :

Faire communiquer deux programmes python


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut Faire communiquer deux programmes python
    Bonjour,
    Je cherche:
    - à lancer un programme python B.py à partir d'un autre programme python A.py (je ne sais pas trop comment m'y prendre (exec, execfile,...?)).
    - et à récupérer une variable issue de B.py dans A.py

    Une bonne idée ?
    Merci d'avance
    Dominique

  2. #2
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Tout dépend comment est conçue ton A.py et ce que tu cherches à récupérer dans mais si c'est juste pour avoir accès au code de A, tu n'as qu'à faire un import A dans ton B.py.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Merci Guigui mais je crains que ce ne soit pas possible.
    Je ne peux pas importer le A dans le B ni l'inverse.
    A titre d'exemple, voilà un code tout bête. Je veux récupérer la variable resultat calculée dans B dans le code A et accessoirement envoyer une variable (a par exemple à B.py) depuis A.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    A.py
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*-
     
    print 'Depart'
    execfile('B.py')
    #print 'Monres = ', resultat
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    B.py
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*-
     
     
    def Somme():
        a=1
        b=5
        resultat=a+b
        return resultat
     
    if __name__ == "__main__":
        print 'Résultat = ',Somme()
    Merci de m'aider....

  4. #4
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    le if __name__ == "__main__": ... n'est à utiliser que pour tester son module. Et quand tu fais un import B, ce qu'il y a dans le if __name__ == ... n'est pas exécuté (car la condition n'est pas réalisée)
    Avec une importation,c'est très simple

    Il suffit de modifier ton fichier A comme ceci
    A.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*-
    import B
     
    print 'Depart'
    print 'Résultat = ',B.Somme()
    Pourquoi ne veux-tu pas utiliser une importation ?

    sans importation, tu peux faire ceci:
    A.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*-
    import os
     
     
    print 'Depart'
    os.system('B.py')
    ou ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*-
    import os
     
    print 'Depart'
    print os.popen('B.py').read()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Merci Guigui. Ca marche.
    Et comment puis-je passer un paramètre de A vers B ?
    Par exemple, pour que le a=1 soit envoyé vers B.py par A.py
    Merci d'avance

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 49
    Points : 45
    Points
    45
    Par défaut
    Oops .
    Je viens de me rendre compte du caratère nullissime de ma dernière question !!!! Je comprends mieux pourquoi je n'avais plus de réponses !!! J'ai honte!
    OK, je mets le a en paramètre de la fonction
    Pour ceux qui pourraient être pires que moi, voilà:
    A.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*- 
    import B   
    print 'Depart' 
    print 'Résultat = ',B.Somme(a=24)
    B.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/env python
    # -*- coding:Latin-1 -*-
     
    def Somme(a):
        b=5
        resultat=a+b
        return resultat
    Merci beaucoup Guigui

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 13/11/2007, 19h46
  2. faire communiquer deux applications j2EE au sein de jBoss
    Par zizoux5 dans le forum Wildfly/JBoss
    Réponses: 9
    Dernier message: 18/04/2007, 21h57
  3. Faire communiquer deux applications
    Par thierrybatlle dans le forum Langage
    Réponses: 1
    Dernier message: 31/01/2006, 09h37
  4. comment faire communiquer deux form MDI?
    Par eponette dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2005, 12h20
  5. [Technologie][Stratégie] Faire communiquer deux applis
    Par KitsuneSama dans le forum Général Java
    Réponses: 13
    Dernier message: 21/06/2004, 17h25

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