Je peux rediriger avec succès ma sortie vers un fichier, mais cela semble écraser les données existantes du fichier:append subprocess.Popen sortie dans le fichier?
import subprocess
outfile = open('test','w') #same with "w" or "a" as opening mode
outfile.write('Hello')
subprocess.Popen('ls',stdout=outfile)
va supprimer la ligne 'Hello'
du fichier. Je suppose qu'une solution consiste à stocker la sortie ailleurs comme une chaîne ou quelque chose (ce ne sera pas trop long), et l'ajouter manuellement avec outfile.write(thestring)
- mais je me demandais s'il me manque quelque chose dans le module qui facilite ce.
Note sur le poste ci-dessus: après quelques essais, il semble que 'subprocess.Popen' a besoin de quelque chose qui ressemble vraiment à un fichier pour ses arguments' stdout' et 'stderr', donc leur donner un objet personnalisé avec seulement une méthode' write' n'est pas suffisant. J'ai essayé, mais une fonction 'fileno' est nécessaire, et je ne suis pas assez bon pour l'imiter dans une classe à moi. –
J'ai essayé d'utiliser cette méthode mais j'ai découvert que pour une raison quelconque, chaque fois que j'exécute le processus externe avec un fichier que j'ai définitivement ouvert pour l'ajouter, la sortie du processus écrit depuis le début du fichier et écrase toute information là-bas. Donc, pour utiliser cette solution, il faut appeler log.seek (0, os.SEEK_END) immédiatement après avoir ouvert le fichier. – Luke