J'ai une liste Je veux transmettre cette variable de cette liste à une commande Linux, si vous aimez ceci. p> mais J'obtiens l'erreur suivante. P> typeError: ExecV () arg 2 ne doit contenir que des chaînes p>
blockquote> J'ai essayé aussi bien cela, mais encore une fois, cela ne fonctionne pas. P>
subprocess.call("service delete $apps", shell=True)
3 Réponses :
subprocess.Call ("Service Supprimer $ des applications", shell = true) p>
Ceci est faux parce que
applications code> n'est pas une variable de coque. En passant une variable de chaîne Python String fonctionne hors de la boîte. P>
>>> a = ['a', 'b', 'c'] >>> sb.call(["echo", ','.join(a)]) a,b,c 0
subprocess.call(["service", "delete", "wq35a5huqlja45jsyukrpmwuiayovrmh", ...])
J'ai évité la réponse de Harly H Harly H, mais juste pour la complétude, voici une autre solution. Ceci nécessite un python suffisant pour avoir sous-processus.run () code> Quelque chose de similaire est facile ou au moins possible même avec l'interface Python 2
Subprocess Code>. Dans 3,7+
universal_newlines code> est plus étiqueté code> texte code>. P>
xargs code> veillera également à éviter toute "liste d'arguments aussi Erreurs longues "si
apps code> est une chaîne vraiment longue. (Google pour
arg_max code>.) P> p>
Subprocess.Call (["Service", "Supprimer"] + apps) code>?
Quelle est la syntaxe attendue pour le service? Si vous pouvez l'appeler avec
Subprocess code> Vous pouvez l'appeler directement, alors quelle serait la ligne de commande?