2016-04-11 23 views
1

abaqus nogui pythonスクリプトを実行しているとき、ターミナルにスクリプトのステータスを出力したいと思います。私は、例えば:Abaqus nogui pythonインターフェイスを使用して端末に印刷

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

行うときしかし、私も試してみました:

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

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

何も端子に出力されないされます。これにもかかわらず、私のコードはうまく動作し、やるべきことすべてをします。

この問題を解決する方法はありますか?

答えて

4

Abaqusは、標準出力を独自のカスタムオブジェクトに自動的に再定義します。正確には、標準出力はabaqus.AbaqusStdoutのインスタンスに設定されます。たとえば、str(sys.stdout)をファイルに書き込む場合、これはあなたが得るものです。

しかし、Pythonの標準出力の元の定義はsys.__stdout__に格納されています。これを使って、標準出力を再定義し直したり、直接標準出力に書き込んだりすることができます。

Abaqusのインストールが2.7よりも古いのPythonを使用しているので、あなたは、例えば、単純に関数を作成し、クリーンそれを作るために

import sys 

print >> sys.__stdout__, 'Opening ODB' 

を書くことができlog、それはあなたのために汚い仕事をして、log('some message')だけを書くでしょう。

標準出力の定義を知った後にログを記録できる他の方法もありますが、これはあなたの探求に任されます。

+0

完璧な回答!ありがとう!それはまさに私が欲しかったことであり、まさにそれがやるべきことです! – UN4

+0

これらの「他の方法」をちょっと調べてください。 abaqus.sysのメンバーをsysのメンバーで上書きしようとしました。標準の印刷コマンドを使用することができましたが、動作しませんでした。 – flxh

+0

@flxhおそらく、私は 'logging'モジュールを考えていました。これは純粋な印刷方法よりもはるかに多くの機能を提供しています。 – hgazibara

関連する問題