Partage
  • Partager sur Facebook
  • Partager sur Twitter

Kill python

Sujet résolu
    2 juillet 2013 à 16:50:04

    Bonjour je souhaite qu'à la fin de mon programme, python se ferme (le code) + le programme lui même.

    J'ai cherché sur internet mais rien ne marche.

    Merci de votre aide. :)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 juillet 2013 à 16:52:30

      import sys
      
      sys.exit("Fin du programme")
      • Partager sur Facebook
      • Partager sur Twitter
        2 juillet 2013 à 16:58:42

        Qu'est-ce que tu entends par "le code + le programme" ?

        • Partager sur Facebook
        • Partager sur Twitter
        Zeste de Savoir, le site qui en a dans le citron !
          2 juillet 2013 à 16:59:25

          Bonjour, ca ne marche pas.

          En fait je me sers de python pour écrire un .bat et le lancer à la fin.

          os.system('mon.bat')

          Et je suis obligé d'attendre que mon .bat soit terminé d'executer pour que ta commande marche, je voudrais que mon python se ferme après avoir lancer le .bat

          -
          Edité par Beardie 2 juillet 2013 à 17:00:03

          • Partager sur Facebook
          • Partager sur Twitter
            2 juillet 2013 à 17:03:31

            Alors utilise subprocess.spawn() au lieu de os.system().

            Ça semble dégueu de générer un bat pour le lancer tout de suite. Par curiosité pourquoi tu as besoin de faire ça ?

            • Partager sur Facebook
            • Partager sur Twitter
            Zeste de Savoir, le site qui en a dans le citron !
              2 juillet 2013 à 17:09:27

              Pourquoi ca serait dégueu de générer un .bat pour le lancer tout de suite ? oO 

              Pour ne pas rentrer dans les détails, le but c'est de créer un .bat qui change en fonction du noms des fichiers la ou il se trouve. 

              Sinon j'ai essayé et ca ne marche pas :/ 

              subprocess.spawn("fin") 

              Je ne sais pas si je l'utilise bien, et faut-il faire un import ?

              • Partager sur Facebook
              • Partager sur Twitter
                2 juillet 2013 à 17:20:38

                Beardie a écrit:

                Pourquoi ca serait dégueu de générer un .bat pour le lancer tout de suite ? oO 

                Parce que :

                • c'est pas portable
                • ça utilise os.system qui est notablement dangereuse car c'est un jeu d'enfant à hacker
                • c'est beaucoup plus chiant à débugger
                • c'est inutilement compliqué compte tenu du fait qu'il n'y a rien que tu puisses faire en batch et pas en Python

                Pour ne pas rentrer dans les détails, le but c'est de créer un .bat qui change en fonction du noms des fichiers la ou il se trouve. 

                Sinon j'ai essayé et ca ne marche pas :/ 

                subprocess.spawn("fin") 

                Je ne sais pas si je l'utilise bien, et faut-il faire un import ?

                Oui il faut importer subprocess et aller lire sa doc.

                • Partager sur Facebook
                • Partager sur Twitter
                Zeste de Savoir, le site qui en a dans le citron !
                  2 juillet 2013 à 17:26:59

                  nohar a écrit:

                  Beardie a écrit:

                  Pourquoi ca serait dégueu de générer un .bat pour le lancer tout de suite ? oO 

                  Parce que :

                  • c'est pas portable
                  • ça utilise os.system qui est notablement dangereuse car c'est un jeu d'enfant à hacker
                  • c'est beaucoup plus chiant à débugger
                  • c'est inutilement compliqué compte tenu du fait qu'il n'y a rien que tu puisses faire en batch et pas en Python

                  Euh pas portable je vois pas ce que tu veux dire.

                  Qui hackerai quoi ? je ne comprend pas, c'est un petit programme pour moi qui prend 1 sec une sec à s'éxectuer et qui n'a pas besoin d'internet. 

                  Je n'ai pas besoin de debugger quoi que ce soit, mon .bat marche parfaitement.

                  Si j'aurai pu le faire en python je l'aurai fait mais je n'ai pas trouvé... A moins que tu saches faire un encodage de sous-titres video de A à Z, je suis preneur ! :)

                  Je vais lire la doc sinon.

                  -
                  Edité par Beardie 2 juillet 2013 à 17:27:56

                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 juillet 2013 à 17:35:24

                    Beardie a écrit:

                    Je n'ai pas besoin de debugger quoi que ce soit

                    Tu peux mettre en résolu alors.

                    Beardie a écrit:

                    Si j'aurai pu le faire en python je l'aurai fait mais je n'ai pas trouvé... A moins que tu saches faire un encodage de sous-titres video de A à Z, je suis preneur ! :)

                    Faudrait voir le code du .bat à la limite. En fait les deux, le python et le .bat.

                    -
                    Edité par LoupSolitaire 2 juillet 2013 à 17:39:46

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Blond, bouclé, toujours le sourire aux lèvres...

                      2 juillet 2013 à 17:36:16

                      Pourquoi je mettrais résolu ? Je parlais du .bat pour le débuggage. C'est mon code python que je souhaite fermer...

                      Et j'ai lu la doc mais je n'ai absolument rien compris et je n'ai pas retrouvé ton subprocess.spawn() dedans et le fait que ce soit en anglais ne m'aide pas trop. Si tu pouvais m'expliquer son fonctionnement, ca serait sympa de ta part :)

                      -
                      Edité par Beardie 2 juillet 2013 à 17:38:51

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        2 juillet 2013 à 17:40:57

                        Bonjour,

                        Ce que je ne comprend pas, l'autre sens fonctionne aussi, c'est pourquoi ne pas faire cela en batch?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 juillet 2013 à 17:45:07

                          Salut !

                          Car je n'ai aucune connaissance en shell et que je me débrouille un peu mieux en python.

                          Le .bat représenté une ligne de code auquel il faut rentrer le nom de l'entrée vidéo, et la sortie. Je me sers du python pour écrire cette ligne et lancer le .bat

                          Je cherche juste à fermer mon programme python après qu'il est lancé mon .bat, je ne cherche pas à réécrire mon code en shell. 

                          • Partager sur Facebook
                          • Partager sur Twitter
                            2 juillet 2013 à 17:48:32

                            Mon dieu...

                            T'as pas besoin de faire un fichier .bat pour une seule ligne, tu peux exécuter direct la commande depuis Python, ça me semble beaucoup plus simple.

                            Poste ton code.

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Blond, bouclé, toujours le sourire aux lèvres...

                              2 juillet 2013 à 17:52:52

                              Edit : car je souhaite garder mon code privé.

                              -
                              Edité par Beardie 3 juillet 2013 à 11:36:52

                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 juillet 2013 à 18:32:10

                                os.system sert à lancer une commande système comme son nom n'indique. Du coup, pourquoi mettre ta commande dans un .bat et lancer le .bat depuis python alors que tu pourrais lancer la commande directement via os.system ?

                                Ce serait plus simple.

                                Après il y a beaucoup à dire sur le code : la variable i déclarée au tout début du code alors qu'elle est utilisée juste dans une boucle et le nom file qui a une signification en python, il faut donc éviter de l'utiliser comme nom de variable.

                                -
                                Edité par LoupSolitaire 2 juillet 2013 à 18:36:06

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Blond, bouclé, toujours le sourire aux lèvres...

                                  2 juillet 2013 à 19:34:06

                                  Alors bonne nouvelle, effectivement, tu as raison, pas besoin de .bat :)

                                  Me reste qu'à trouver comment fermer le python quand j'ai ma commande qui tourne. Si tu as une idée. :)

                                  Sinon je prend note pour file et le pour le i c'est que je voulais le sortir des boucles car j'avais un soucis, c'était juste un test. Il est désormais juste au dessus de mon 1er for :)

                                  -
                                  Edité par Beardie 2 juillet 2013 à 19:42:45

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    2 juillet 2013 à 20:13:33

                                    Après quelques tests, je pense que subprocess.Popen() devrait marcher.

                                    Il y a des exemples dans la doc : http://docs.python.org/2/library/subprocess.html#replacing-the-os-spawn-family

                                    Par contre si tu fais un import subprocess, il faut écrire subprocess.Popen() et pas juste Popen()

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Blond, bouclé, toujours le sourire aux lèvres...

                                      3 juillet 2013 à 8:32:09

                                      En fait si ce qui te dérange c'est juste la fenêtre de la console, tu peux aussi exécuter ton script avec pythonw.exe au lieu de python.exe.

                                      Edit: hmmm au temps pour moi. J'avais pas vu que tu récupérais des saisies clavier.

                                      -
                                      Edité par nohar 3 juillet 2013 à 8:47:25

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Zeste de Savoir, le site qui en a dans le citron !
                                        3 juillet 2013 à 11:35:58

                                        Bonjour, le subprocess.popen() n'a pas marché, il marquait ça comme erreur :

                                        TypeError: __init__() missing 1 required positional argument: 'args'

                                        et ce que propose nohar, même  barré à marché car tout ce que je fais dans mon python, une fois arrivé à la fin, j'en ai plus besoin car il a effectué tout ce que je desirais.

                                        Merci à vous j'ai appris des choses en plus ! :)

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          3 juillet 2013 à 16:47:23

                                          Beardie a écrit:

                                          Bonjour, le subprocess.popen() n'a pas marché, il marquait ça comme erreur :

                                          TypeError: __init__() missing 1 required positional argument: 'args'

                                          Non mais essaye de comprendre au lieu de faire des copier/coller, sinon tu progresseras jamais.

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Blond, bouclé, toujours le sourire aux lèvres...

                                          Kill python

                                          × 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