C'est un code simple mais c'est echo
la sortie au lieu de rediriger la sortie vers le fichier :
from subprocess import Popen
Popen.wait(Popen(['echo', 'echo', 'hi', '>', 'test']))
Voici la sortie :
echo hi > test
Mais il ne crée pas de fichier appelé test
dans le répertoire courant.
J'ai aussi essayé ceux-ci :
Popen.wait(Popen(['echo', 'echo', 'hi', '> test']))
Popen.wait(Popen(['echo', 'echo', 'hi >', 'test']))
Popen.wait(Popen(['echo', 'hi', '> test']))
Popen.wait(Popen(['echo', 'hi >', 'test']))
Popen.wait(Popen(['echo', 'hi', '> test']))
Comment faire cela dans ce code? Je préfère utiliser Popen.wait(Popen...)
.
Le sous- processus Python ne permet pas d'utiliser ">" pour rediriger comme indiqué dans cette réponse :
stdin, stdout et stderr spécifient respectivement les handles de fichier d'entrée standard, de sortie standard et d'erreur standard du programme exécuté. Les valeurs valides sont PIPE, DEVNULL, un descripteur de fichier existant (un entier positif), un objet de fichier existant et Aucun.
PIPE indique qu'un nouveau canal vers l'enfant doit être créé. DEVNULL indique que le fichier spécial os.devnull sera utilisé. Avec les paramètres par défaut de Aucun, aucune redirection n'aura lieu ; les descripteurs de fichiers de l'enfant seront hérités du parent.
De plus, stderr peut être STDOUT, ce qui indique que les données stderr des applications doivent être capturées dans le même descripteur de fichier que pour stdout.
Vous devez d'abord créer le fichier, par exemple :
with open("test", 'w+') as f:
Popen.wait(Popen(['echo', ' hi'], stdout=f))
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots