Partage
  • Partager sur Facebook
  • Partager sur Twitter

Forcer un programme à ne pas rendre la main

et ignorer une boite de dialogue d'erreur

Sujet résolu
    31 juillet 2015 à 16:46:31

    Bonjour, dans le cadre de mon travail je développe un script python d'automatisation de lancement de calculs via un logiciel.

    1) Lorsque je lance la commande os.system('ma_commande'), la manière dont est codé le logiciel que j'utilise via la commande fait que ça me rend la main tout de suite, et du coup mon script python continue à être executé et comme derrière je veux récupérer les valeurs issus du fichiers résultat, il me dit qu'il n'existe pas puisqu'effectivement au moment ou python reprend le fichier n'a pas encore été crée puisque dépendamment de mon essai ça prend plusieurs secondes.

    Je voulais savoir s'il y avait un moyen d'attendre que ce soit bien finit, ou de forcer à ce que ça ne me rende pas la main tant que ce n'est pas fini ?

    2) En outre, une fois que le logiciel a finit de faire ce que je lui demande, une boite de dialogue apparaît me disant que le logiciel a cessé de fonctionner et je dois cliquer sur "fermer le programme" pour continuer (mais tout a bien marché, c'est le logiciel qui a été codé comme ça...

    Comment puis-je automatiser le click sur le 2ème bouton de la boîte de dialogue?

    J'espère avoir été claire, merci d'avance si vous pouvez m'aider !!!

    -
    Edité par Maym 31 juillet 2015 à 16:52:46

    • Partager sur Facebook
    • Partager sur Twitter
      31 juillet 2015 à 16:59:45

      J'ai pas capté grand chose mais regarde du coté du module time (essaye time.sleep) ^^

      Ensuite, pour fermer le logiciel automatiquement, le module sys, avec sys.exit devrait suffir

      En espérant t'avoir aidé =)

      -
      Edité par Reiex 31 juillet 2015 à 17:00:44

      • Partager sur Facebook
      • Partager sur Twitter
      Créateur de mauvaises blagues et de mauvais jeux depuis 1999 - Endless-caves - Endless-rooms
      Anonyme
        31 juillet 2015 à 18:00:59

        Quelle est la commande que tu exécutes ?

        Mais dans tous les cas, tu auras un meilleur contrôle sur tes commandes avec le module subprocess.

        • Partager sur Facebook
        • Partager sur Twitter
          3 août 2015 à 11:01:45

          J'utilise une commande qui lance un calcul de post traitement de durée de vie sur une structure, à partir d'un fichier d'entrée elle en génère un de sortie. Mais lorsque je la lance via python avec os.system, ça commence, mais comme ma prochaine ligne de commande sous python teste l'existence du fichier de sortie (pour savoir si la calcul a planté ou pas), et que la commande rend directement la main, et bien mon if devient faux et biensur il ne trouve jamais le fichier de sortie. 

          Je ne peux pas prévoir combien de temps va prendre le post traitement, donc je ne suis pas sûre de pouvoir m'en sortir de manière optimale avec time.

          Merci pour vos réponses je vais regarder subprocess !

          • Partager sur Facebook
          • Partager sur Twitter
            4 août 2015 à 9:27:42

            Je reviens vers vous, car je n'arrive pas à écrire une commande qui ferme automatiquement la boite de dialogue qui s'ouvre une fois que le calcul est terminé, quelqu'un a-t-il une solution ? :)
            • Partager sur Facebook
            • Partager sur Twitter
              4 août 2015 à 13:53:38

              Car j'essaye de faire :

              subprocess.call('ma commande 2> nul', shell=True)

              Mais ça ne marche pas, c'est comme si je n'avais rien écrit

              Idem si je crée un batch dans leque j'écris ceci

              with open('test.bat', 'w') as batch:
              	batch.write('ma commande 2> nul')
              os.system('test.bat')

              Et même en ligne de commande ça ne ferme pas automatiquement la boite de message d'erreur qui apparait...

              En gros 2>NUL redirige les erreurs de la console vers le néant, mais là j'ai une boite de dialogue qui apparaît me disant que le programme a planté (la boite typique Windows) et je ne sais pas comment la fermer automatiquement.

              -
              Edité par Maym 4 août 2015 à 15:13:20

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                5 août 2015 à 8:50:46

                mais tout a bien marché, c'est le logiciel qui a été codé comme ça...

                Non au contraire, si une fenêtre d'erreur apparaît c'est que le programme est mal codé !

                C'est donc à toi de te remettre en question...

                • Partager sur Facebook
                • Partager sur Twitter
                  6 août 2015 à 9:40:37

                  Ce n'est pas moi qui ait codé ce logiciel là, je ne suis qu'une utilisatrice ;) J'ai fais remonter l'erreur cependant une correction devrait être mise en place.

                  Merci.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Forcer un programme à ne pas rendre la main

                  × 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