Ich habe einen Teil eines Python-Skripts. Dieses Skript wird mit einem Shell-Skript aufgerufen.Wie erhalten Sie korrekte Statusmeldungen für ein Python-Skript?
try:
sqlContext.sql("create table {}.`{}` as select * from mytempTable".format(hivedb,table))
except Exception as e:
status = 'fail'
error_message = e
else:
status = 'success'
error_message = 'No error'
print ("{},{},{},{}".format(hivedb,table,status,error_message))
status == 'success'
sys.exit(1)
In diesem obigen Code, wenn ich status == 'success'
verwende ich bin immer success
für die ganze Zeit, wenn das Skript ausgeführt wird, auch für fehlgeschlagene Aufträge.
Wenn ich sys.exit(1)
oder beide zusammen verwende, bekomme ich die ganze Zeit einen Fehler.
Was soll ich tun, die Skriptausführung erfolgreich zu sein zu erhalten, wenn status
'success'
und fehlschlagen, wenn status
'fail'
ist?
... 'wenn Status! = 'Erfolg': sys.exit (1)'? Verwenden Sie ** str ** format auch nicht, um SQL-Abfragen zu erstellen, verwenden Sie die von der verwendeten Bibliothek zur Verfügung gestellte Parametrisierung. – jonrsharpe
@jonrsharpe Ihr Kommentar funktioniert für mich. Ich habe einen kleinen Zweifel, im obigen Code möchte ich 'error_message' separat drucken. Ich meine, ich will, dass es auf der Konsole angezeigt wird, aber nicht als Ausgabe des Skripts –
Getrennt was? Was genau ist dein * kleiner Zweifel *? Was hast du versucht, es zu zerstreuen? * "Ich möchte, dass es auf der Konsole angezeigt wird, aber nicht als Ausgabe des Skripts" * - es ist unklar, welche Unterscheidung Sie dort zeichnen. – jonrsharpe