Je jouais avec le module de sous-processus de Python, en essayant quelques exemples mais je n'arrive pas à faire fonctionner les instructions heredoc.Sous-processus Python avec heredocs
Voici l'exemple trivial, je jouais avec:
import subprocess
a = "A String of Text"
p = subprocess.Popen(["cat", "<<DATA\n" + a + "\nDATA"])
Je reçois l'erreur suivante lorsque je lance le code ci-dessus:
cat: <<DATA\nA String of Text\nDATA: No such file or directory
Est-ce que je fais mal? Est-ce seulement possible? Si oui, comment ferais-je?
Mise à jour
Je voulais juste dire que cela ne devrait jamais être réalisée en un véritable programme de python, car il y a de meilleures façons de le faire.
Je n'ai pas tout à fait compris ce que le paramètre Shell a fait. Les docs expliquent très bien ce qui se passe quand vous le définissez sur true mais pas tellement quand il est défini sur false. – MitMaro
Lorsque le paramètre 'shell' est' False', le module 'subprocess' exécute directement le programme que vous spécifiez (dans votre cas, probablement'/bin/cat') avec exactement les arguments spécifiés dans l'appel 'Popen()' .Aucune interprétation de caractères shell tels que redirection ou tuyaux ou quoi que ce soit n'est fait, le programme voit exactement ce que vous lui envoyez. C'est pourquoi 'cat' dit qu'il n'a pas pu trouver le fichier dont le nom a commencé avec' << DATA'. –
Merci pour l'explication, clarifié plusieurs choses. – MitMaro