Je voudrais enregistrer toute la sortie d'un script Python. J'ai essayé:Comment rediriger stderr en Python?
import sys
log = []
class writer(object):
def write(self, data):
log.append(data)
sys.stdout = writer()
sys.stderr = writer()
Maintenant, si je "imprime 'quelque chose" "il est enregistré. Mais si je fais par exemple une erreur de syntaxe, disons "print" quelque chose # ", il ne sera pas enregistré - il ira dans la console à la place.
Comment capturer aussi les erreurs de l'interpréteur Python?
je vis une solution ici:
http://www.velocityreviews.com/forums/showpost.php?p=1868822&postcount=3
mais le second exemple se connecte à/dev/null - ce n'est pas ce que je veux. Je voudrais l'enregistrer dans une liste comme mon exemple ci-dessus ou StringIO ou tel ...
Aussi, de préférence, je ne veux pas créer un sous-processus (et lire ses stdout et stderr dans un thread séparé).
Peut-être que writer doit également implémenter writelines(). Ne pas oublier sys.stderr.flush() –