0
votes

Comment transmettre une variable de liste à la commande sous-processus.call à Python

J'ai une liste xxx pré>

Je veux transmettre cette variable de cette liste à une commande Linux, si vous aimez ceci. p> xxx pré>

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)


2 commentaires

Subprocess.Call (["Service", "Supprimer"] + apps) ?


Quelle est la syntaxe attendue pour le service? Si vous pouvez l'appeler avec Subprocess Vous pouvez l'appeler directement, alors quelle serait la ligne de commande?


3 Réponses :


0
votes

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


0 commentaires

1
votes
subprocess.call(["service", "delete", "wq35a5huqlja45jsyukrpmwuiayovrmh", ...])

0 commentaires

0
votes

J'ai évité la réponse de Harly H Harly H, mais juste pour la complétude, voici une autre solution. XXX

Ceci nécessite un python suffisant pour avoir sous-processus.run () Quelque chose de similaire est facile ou au moins possible même avec l'interface Python 2 Subprocess . Dans 3,7+ universal_newlines est plus étiqueté texte .

xargs veillera également à éviter toute "liste d'arguments aussi Erreurs longues "si apps est une chaîne vraiment longue. (Google pour arg_max .)


0 commentaires