2016-04-11 10 views
1

Wenn ich abaqus Nogui Python-Skript ausführen möchte ich den Status des Skripts auf dem Terminal ausgeben. Aber wenn ich es tue, z.B .:Drucken an Terminal mit Abaqus Nogui Python-Schnittstelle

print("Opening ODB...") 
print("Plotting images...") 

ich auch versucht:

print "Opening ODB..." 
print "Plotting images..." 

und

sys.stdout.write("Opening ODB...") 
sys.stderr.write("Plotting images...") 

Nichts wird an das Terminal ausgegeben. Trotzdem läuft mein Code gut und tut alles, was er tun soll.

Hat jemand irgendwelche Ideen, wie man dieses Problem löst?

Antwort

4

Abaqus definiert die Standardausgabe automatisch für sein eigenes benutzerdefiniertes Objekt neu. Um genau zu sein, wird die Standardausgabe auf eine Instanz von abaqus.AbaqusStdout gesetzt. Das würden Sie bekommen, wenn Sie zum Beispiel str(sys.stdout) in eine Datei schreiben würden. Die ursprüngliche Definition der Standardausgabe von Python wird in sys.__stdout__ gespeichert. Sie können damit die Standardausgabe neu definieren oder direkt zum Schreiben verwenden.

Seit Abaqus Installation älter als 2.7 mit Python ist, könnten Sie

import sys 

print >> sys.__stdout__, 'Opening ODB' 

Um es sauberer schreiben, erstellen Sie einfach eine Funktion, z.B. log, die die schmutzige Arbeit für Sie erledigen und dann nur log('some message') schreiben.

Es gibt noch andere Möglichkeiten, wie Sie die Protokollierung durchführen können, wenn Sie die Definition der Standardausgabe kennen. Dies liegt jedoch an Ihnen.

+0

Perfekte Antwort! Vielen Dank! Es ist genau das, was ich wollte und genau das, was es tun sollte! – UN4

+0

Könnten Sie bitte diese "anderen Wege" ein wenig untersuchen? Ich habe versucht, die Mitglieder von abaquss.sys mit den Mitgliedern von sys zu überschreiben, also konnte ich den Standarddruckbefehl verwenden, aber es hat nicht funktioniert. – flxh

+0

@flxh Wahrscheinlich habe ich an 'logging' Modul gedacht, das viel mehr Funktionalität bietet als der reine Druckansatz. – hgazibara

Verwandte Themen