Quiero registrar la salida std de un trozo de código Python a un archivo, utilizando el 'con' declaración:la salida estándar de registro y stderr al archivo usando Python conectarse 'con' declaración
with log_to_file('log'):
# execute code
es el más fácil manera de hacer esto para definir la log_to_file
manualmente, por ejemplo:
import sys
class log_to_file():
def __init__(self, filename):
self.f = open(filename, 'wb')
def __enter__(self):
self.stdout = sys.stdout
self.stderr = sys.stderr
sys.stdout = self.f
sys.stderr = self.f
def __exit__(self, type, value, traceback):
sys.stdout = self.stdout
sys.stderr = self.stderr
o hay una clase incorporada que puede hacer esto ya?
Tome un vistazo a [esta] (http://stackoverflow.com/questions/616645/how-do-i-duplicate-sys-stdout-to-a-log-file-in-python) pregunta. Parece lo que estás buscando. Tenga en cuenta que una de las respuestas usa el módulo de registro existente, mientras que otras usan multiprocesamiento. – thegrinner
Su enfoque es bueno, incluso si pierde cerrar el archivo en '__exit__' :) Me gusta. – tito
¿Qué tipo de respuesta esperas? Lo daré como un comentario: No, no hay una clase incorporada que haga eso. –