A menudo necesito enviar datos a un archivo o, si el archivo no está especificado, a la salida estándar. Utilizo el siguiente fragmento:
if target:
with open(target, 'w') as h:
h.write(content)
else:
sys.stdout.write(content)
Me gustaría reescribirlo y manejar ambos objetivos de manera uniforme.
En el caso ideal sería:
with open(target, 'w') as h:
h.write(content)
pero esto no funcionará bien porque sys.stdout se cierra al salir del withbloque y no quiero eso. Yo tampoco quiero
stdout = open(target, 'w')
...
porque necesitaría recordar restaurar la salida estándar original.
Relacionado:
- ¿Redirigir stdout a un archivo en Python?
- Manejo de excepciones : artículo interesante sobre el manejo de excepciones en Python, en comparación con C ++
Editar
Sé que puedo ajustar target, definir una función separada o usar el administrador de contexto . Busco una solución sencilla, elegante e idiomática que no requiera más de 5 líneas.