Partage
  • Partager sur Facebook
  • Partager sur Twitter

Execution commande système

    11 novembre 2011 à 23:17:41

    Bonjour, je suis actuellement en train de faire un petit script python pour réaliser certaines taches en fond.
    Il doit me scanner, automatiquement chaque fichier que je télécharge.
    Le logiciel fonctionne avec une base de donnée mais ce n'est qu'un détail.
    Je dois lancer le scan du fichier à l'aide d'un scanneur en ligne de commande (tel qu'avira).
    Mais il doit prendre en compte les arguments et les fichiers de configuration.
    Je m'explique, la commande à lancer est :
    C:/Users/M/Desktop/Avira/avira.exe fichier.exe > sortie.txt

    Mais le os.startfile ne fonctionne pas (à cause des arguments principalement).

    Pourriez vous m'aider s'il vous plait.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 novembre 2011 à 23:23:52

      Tu peux aller voir du côté de subprocess
      • Partager sur Facebook
      • Partager sur Twitter
        11 novembre 2011 à 23:59:17

        Merci pour ton lien, car même si ce n'est pas la solution pour laquelle j'ai opte, elle m'a mît sur la piste
        Dans mon cas, j'utilise simplement os.system().

        Merci
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          12 novembre 2011 à 0:02:15

          subprocess c'est mieux!
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 novembre 2011 à 16:22:03

            Si, voir la partie rationale de la PEP 324
            • Partager sur Facebook
            • Partager sur Twitter
              12 novembre 2011 à 21:35:25

              Citation : VainEntetement

              Non.



              Au lieu de faire des réponses monosyllabiques, et en plus fausses, tu ferais mieux de lire la doc :


              Citation

              system(command)
              Execute the command (a string) in a subshell. This is implemented by calling the Standard C function
              (...)
              The subprocess module provides more powerful facilities for spawning new processes and retrieving their results; using that module is preferable to using this function. Use the subprocess module. Check especially the Replacing Older Functions with the subprocess Module section.

              • Partager sur Facebook
              • Partager sur Twitter
                12 novembre 2011 à 23:49:50

                Alors explique moi quelle est la différence dans le cas présent. Si subprocess est mieux, c'est qu'il y en a une en sa faveur j'imagine.
                • Partager sur Facebook
                • Partager sur Twitter
                  13 novembre 2011 à 1:52:02

                  Citation : VainEntetement

                  Alors explique moi quelle est la différence dans le cas présent. Si subprocess est mieux, c'est qu'il y en a une en sa faveur j'imagine.



                  Tu remets donc en question ce que dit la documentation officielle elle-même quand elle affirme using that module is preferable to using this function et qu'elle prend la peine de faire un paragraphe spécial pour éviter d'utiliser des fonctions obsolètes ? Propose-toi conseiller personnel de Guido ou envoie-lui un mail.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 novembre 2011 à 2:35:59

                    Tu n'as pas répondu à ma question.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 novembre 2011 à 4:41:22

                      Citation : VainEntetement

                      Tu n'as pas répondu à ma question.



                      Ni toi à la mienne.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 novembre 2011 à 5:07:10

                        Oui bon, tant que vous deux allez jouer à ce jeu, on n'avancera pas.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 novembre 2011 à 10:11:28

                          Ok, alors je réponds. Je ne mets rien du tout en question, utiliser subprocess est préférable à os.system. Mais j'affirme que ça ne veut pas dire que subprocess est toujours « mieux ». En l'occurrence, ça ne fait absolument aucune différence. Ça marche parfaitement avec os.system. subprocess n'est donc pas « mieux ».

                          Maintenant, réponds à la mienne.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            13 novembre 2011 à 10:59:26

                            Citation

                            Mais j'affirme que ça ne veut pas dire que subprocess est toujours « mieux »



                            Au lieu d'affirmer sans explications, si tu donnais le moment où il est mieux d'utiliser os.system()

                            Après si tu ne peux pas me répondre, car tu dis :

                            Citation

                            En l'occurrence, ça ne fait absolument aucune différence



                            Si dans la doc officielle on te dit qu'il est souhaitable d'utiliser plus subprocess que os.system(), tu en déduis?

                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 novembre 2011 à 11:41:47

                              Je ne sais pas niveau 'memoire' quelle est la différence, mais j'ai essayé os.system() et os.popen()
                              et j'ai opté pour popen car je n'avais pas besoin de parser un fichier, mais directement le résultat, donc plus rapide (on peut surement le faire avec os.system(), mais j'ai utilisé popen).

                              Merci
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                13 novembre 2011 à 11:44:00

                                subprocess c'est mieux!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  13 novembre 2011 à 13:21:31

                                  Non mais fred, arrête de faire semblant d'être complètement idiot. C'est pas parce qu'il y a deux solutions qu'il y en a une qui est « mieux » qu'une autre, et c'est pas parce que la doc officielle (qui parle dans le cas général) en conseille une que l'autre est systématiquement moins bien. Il n'y en a pas de « mieux » en l'occurrence.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    13 novembre 2011 à 13:42:25

                                    Il y a tout de même des problèmes de portabilités avec ces deux méthodes et je ne parle pas de la commande qu'on leur passerai en argument. Avec ces histoires de PIPE et de Thread... Mais je ne suis pas assez informé pour en parler.

                                    En plus, os.system a un comportement horrible sur Windows dans un programme en GUI. Ça ouvre un invite de commande (cmd.exe) à chaque appel.
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Execution commande système

                                    × 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