python - IOError verhindern: [Errno 5] Eingabe- / Ausgabefehler bei Ausführung ohne stdout

Ich habe ein Skript, das automatisch über cronjob auf dem Server ausgeführt wird und das mehrere andere Skripte importiert und ausführt.

Einige von ihnen verwenden Drucke, die natürlich erstelltIOError: [Errno 5] Input/output error Da das Skript ohne angeschlossenes SSH / Terminal ausgeführt wird, gibt es keine ordnungsgemäße Standardkonfiguration.

Es gibt viele Fragen zu diesem Thema, aber ich konnte niemanden finden, der tatsächlichlöse it, vorausgesetzt, ich kann den Druck nicht entfernen oder die ausgeführten Skripte ändern.

Ich habe verschiedene Dinge ausprobiert, darunter:

class StdOut(object):
    def __init__(self):
        pass
    def write(self, string):
        pass
sys.stdout = StdOut()
sys.stderr = StdOut()

un

from __future__ import print_function
import __builtin__

def print(*args, **kwargs):
        pass
    __builtin__.print = print

Aber nichts davon funktioniert. Ich gehe davon aus, dass dies nur das Modul selbst betrifft und nicht die Module, die ich später importiere / starte.

Also, wie kann ich einen Stub-Stdout erstellen, der sich auf @ auswirkall Module im Prozess? Wie gesagt, ich möchte die Skripte, die vom Hauptmodul ausgeführt werden, nicht ändern, aber ich kann alles innerhalb des importierenden Moduls ändern. Und nur zur Klarstellung - alles wird importiert, es werden keine neuen Prozesse erzeugt usw.

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage