L'exécution d'un fichier de commandes avec paramètres en Python OU en F#
J'ai cherché sur le site, mais je n'ai pas vu quelque chose qui correspond à ce que je cherchais. J'ai créé une application autonome qui utilise un service web que j'ai créé. Pour exécuter le client j'utilise:
C:/scriptsdirecotry> "run-client.bat" param1 param2 param3 param4
Comment pourrais-je aller sur ce codage en Python ou en F#. Il semble que ce devrait être assez simple, mais je n'ai pas vu quelque chose en ligne tout à fait conforme à ce que je suis à la recherche d'.
J'apprécie vraiment les deux réponses. Maintenant, je suis plus près d'obtenir python de travail. Je ne vois pas pourquoi je devrais chercher une réponse sur l'autre, bien que je n'ai pas assez de "réputation" de vote des réponses.
OriginalL'auteur Ramy | 2010-05-26
Vous devez vous connecter pour publier un commentaire.
Python est similaire.
Si vous avez besoin d'un comportement asynchrone ou redirigé flux standard.
Essayez de définir stdin aussi, même si vous n'en avez pas besoin.
p = subprocess.Popen([batch, clientID, username, password, output], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
Je crois que c'est corrigé dans la version 2.6 de python.désolé il n'y a un retard entre les réponses. C'est un projet à part donc je n'ai pas beaucoup de temps pour travailler sur. Voir les exceptions ci-dessous, s'il vous plaît:
Traceback (most recent call last): File "C:\Python Scripts\eodReports.py", la ligne 14, in <module> p = sous-processus.Popen([lot, idclient, nom d'utilisateur, mot de passe, sortie], stdout=sous-processus.PIPE, stderr=sous-processus.PIPE, stdin=sous-processus.PIPE) Fichier "C:\Python25\lib\subprocess.py" de ligne, 593, dans init errread, errwrite) Fichier "C:\Python25\lib\subprocess.py", de la ligne 750, en _execute_child args = list2cmdline(args) Fichier "C:\Python25\lib\subprocess.py", la ligne 502, dans list2cmdline needquote = ("arg) ou ("\t" en arg) TypeError: argument de type " int " n'est pas itérable
Peut-être que vous devriez poster votre code sous une autre question. Il est difficile pour moi de le débogage juste par le traceback.
OriginalL'auteur gradbot
En F#, vous pouvez utiliser le
Process
classe à partir de laSystem.Diagnostics
espace de noms. La façon la plus simple pour exécuter la commande doit être ceci:Toutefois, si vous avez besoin de fournir plus de paramètres, vous pouvez avoir besoin de créer
ProcessStartInfo
objet premier (il vous permet de spécifier plusieurs options).OriginalL'auteur Tomas Petricek
Ou vous pouvez utiliser fsi.exe pour appeler un F# script (.fsx). Étant donné le code suivant dans le fichier de Script".fsx"
Vous pouvez appeler à partir de la ligne de commande, utilisez la syntaxe:
La FSharp interactive sera ensuite de retour à
Il n'y a plus d'informations sur fsi.exe options de ligne de commande sur le site msdn: http://msdn.microsoft.com/en-us/library/dd233172.aspx
OriginalL'auteur Huusom