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 :

executer un exe (tel une fonction) sous python [Python 3.X]


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut executer un exe (tel une fonction) sous python
    Bonjour,

    j'ai un problème dans ma routine Python : je n'arrive pas à utilisé un .exe comme on utilise une fonction. c'est à dire que je souhaite exécuté le .exe, lui donnée des paramètre, récupérer les donnée qu'il me renvoi et mettre en "pause" mon programme .PY lors de l'exécution du .exe.

    j'ai essayer avec : reply = subprocess.Popen(["flash.exe"], universal_newlines=True, stdout=subprocess.PIPE).communicate() , mais le programme .exe lancé ne fait rien, et la variable 'reply' est vide
    j'ai aussi essayer avec : os.startfile("wflash.exe") , mais la le programme s’exécute "en mode manuel", et mon programme .PY continue de tourné en même temps

    malgrès plusieurs jour de recherche acharné sur différent forum (y compris celui ci) et site web, je n'ai rien trouvé qui puisse répondre à mon problème. De plus, même si je l'ai utilisé, je ne comprend pas les argument de la classe 'subprocess'.

    merci de vos réponse

    PS : ma configuration est Windows 10, Python 3.4.0 (non modifiable à cause des bibliothèque des instruments de mesures qui sont utilisé dans le programme .PY)

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 914
    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 914
    Points : 7 298
    Points
    7 298
    Par défaut
    Pour ça, on doit connaître la commande pour exécuter un programme exe. Sous Windows, la commande il me semble est : start

    Après, selon ses besoins, plusieurs paramètres peuvent être rajoutés à cette commande. Ensuite l'utilisation de subprocess vous là connaissez...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Merci pour votre réponse fred1599.

    Cependant la commande start est identique à os.startfile(flash.exe)


    Citation Envoyé par fred1599 Voir le message
    Ensuite l'utilisation de subprocess vous là connaissez...
    A ce sujet, et comme je l'ai dit dans le post de démarrage de la discutions, je ne comprend pas la logique et les argument de la classe subprocess. La ligne de code qui comprend le subprocess.fonction(...) est en lien avec un exemple trouvé sur internet (j'ai perdu le lien du site ).

    Ce que je cherche à comprendre, c'est comment on peu récupérer les donnée du .exe, et que l’exécution du script .py ne redémarre qu'une fois les données récupérer

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 914
    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 914
    Points : 7 298
    Points
    7 298
    Par défaut
    J'ai du mal à voir votre corrélation entre os.startfile et subprocess... subprocess va exécuter une commande batch ou bash selon le système d'exploitation utilisé.

    Pour moi, j'ai pas testé, mais ça devrait être quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reply = subprocess.Popen(["start, flash.exe"], universal_newlines=True, stdout=subprocess.PIPE).communicate()
    non ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Malheureusement, cela ne marche pas, à partir du moment où l'on exécuté le .exe, une console vide apparaît, puis disparaît juste après, sans avoir exécuté le code du .exe. de plus la variable reply contient, dans ce cas de figure : " ('', None) "

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    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 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Citation Envoyé par raph_prog Voir le message
    Ce que je cherche à comprendre, c'est comment on peu récupérer les donnée du .exe, et que l’exécution du script .py ne redémarre qu'une fois les données récupérer
    Cà serait plus facile en utilisant la fonction check_output du module subprocess.

    - W

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Merci wiztricks

    Citation Envoyé par wiztricks Voir le message
    Cà serait plus facile en utilisant la fonction check_output du module subprocess.
    Donc si je comprend bien, subprocess.chek_output(...), permet d’exécuté le programme .exe, de lui passer des paramètre (chose que je ne souhaite pas), et de récupérée des sortie (output et erreur)

    Comment je doit écrire les argument, pour que mon programme puise récupérer les donnée, et gérer son execution

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 914
    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 914
    Points : 7 298
    Points
    7 298
    Par défaut
    Citation Envoyé par raph_prog Voir le message
    Malheureusement, cela ne marche pas, à partir du moment où l'on exécuté le .exe, une console vide apparaît, puis disparaît juste après, sans avoir exécuté le code du .exe. de plus la variable reply contient, dans ce cas de figure : " ('', None) "
    Mais comme j'ai dis, il faudra se concentrer sur la fonction start, avec ses paramètres, en l'occurrence le paramètre /C ou /K. Ne pouvant tester et ne les utilisant jamais, c'est à votre tour.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Et au menu du jour on obtient une erreur (je précise que la syntaxe de la commande START, vient directement de Windows)

    Traceback (most recent call last):
    File "C:\Users\Tom\Desktop\trde\b_test_W_1module.py", line 65, in <module>
    reply = subprocess.Popen(["START /I /MAX /NORMAL wflash.exe","2"], universal_newlines=True, stdout=subprocess.PIPE).communicate()
    File "C:\Python34\lib\subprocess.py", line 848, in __init__
    restore_signals, start_new_session)
    File "C:\Python34\lib\subprocess.py", line 1104, in _execute_child
    startupinfo)
    FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable

    bon sérieusement, je ne comprend pas pourquoi il ne trouve pas le fichier .exe, vu que celui ci est dans le même répertoire que le .py, j'ai du rater quelque chose c'est sur.

    Merci quand même pour les indiquations.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    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 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Citation Envoyé par raph_prog Voir le message
    Comment je doit écrire les argument, pour que mon programme puise récupérer les donnée, et gérer son execution
    output = subprocess.check_call(["wflash.exe", "2"]).
    Pour utiliser le module subprocess, il faut quand même savoir ce qu'est une chaîne de caractères, une liste, stdin, stdout,... histoire de pouvoir lire la documentation.

    - W

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Merci pour la commande,

    j'ai réussi avec le :
    output=subprocess.check_output(["flash.exe", arg1, arg2, arg3])
    et le programme me met bien dans output les donnée demandé

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

Discussions similaires

  1. Executer du texte comme une fonction
    Par NicolasJolet dans le forum Excel
    Réponses: 10
    Dernier message: 05/03/2008, 18h57
  2. Compréhension d'une fonction sous Oracle
    Par sat83 dans le forum SQL
    Réponses: 2
    Dernier message: 15/11/2007, 14h43
  3. Une fonction sous Excel 2007 ne fonctionne pas sous Excel 2003
    Par Dryss51 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 27/07/2007, 08h09
  4. Réponses: 1
    Dernier message: 05/10/2006, 17h21
  5. [EXCEL] Execution dune macro dans une fonction SI
    Par Sef974 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2006, 13h25

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