J'ai actuellement un problème majeur avec un script python. Le script exécute des commandes arbitraires via un gestionnaire pour convertir les rapports d'erreurs incorrects en rapports d'erreurs corrects.Problème de sous-processus Python avec des esperluettes
Le problème que je rencontre est de faire fonctionner le script correctement sur Windows avec une commande qui contient des esperluettes dans son chemin. J'ai essayé de citer la commande, en échappant à l'esperluette avec^et aucun ne fonctionne. Je suis maintenant à court d'idées. Aucune suggestion?
Pour clarifier des réponses actuelles:
- J'utilise le module subprocess
- Je passe la ligne de commande + arguments comme une liste
- Le problème est avec le chemin de la commande elle-même , pas un des arguments
- J'ai essayé de citer la commande. Il provoque une erreur
[Error 123] The filename, directory name, or volume label syntax is incorrect
- J'utilise aucun argument shell (si
shell=false
) - Dans le cas où il importe, je suis preneuse une pipe à stderr pour le traitement, mais sans tenir compte stdout et stdin
- Il est seulement pour une utilisation sur Windows actuellement, et fonctionne comme prévu dans tous les autres cas que j'ai testés jusqu'à présent.
- La commande qui a échoué est:
p = subprocess.Popen (prog, stderr = subprocess.PIPE, bufsize = -1)
lorsque le premier élément de la liste 'prog' contient des esperluettes. Citer cette première chaîne ne fonctionne pas.
Le "script" signifie quoi exactement? Qu'est-ce qui fonctionne sur Windows? Qu'est-ce qui échoue sur un autre OS? Quel autre système d'exploitation? –