2016-04-11 14 views
1

abaqus nogui python komut dosyasını çalıştırırken, komut dosyasının durumunu terminale vermek istiyorum. Ben, ör .:Abaqus nogui python arabirimini kullanarak terminale yazdırma

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

yaptığınızda Ama aynı zamanda çalıştı:

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

ve

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

Hiçbir şey terminaline outputted alır. Buna rağmen kodum iyi çalışıyor ve yapması gereken her şeyi yapıyor.

Bu sorunun nasıl çözüleceği konusunda herhangi bir fikri olan var mı?

cevap

4

Abaqus, standart çıktısını otomatik olarak kendi özel nesnesine yeniden tanımlar. Kesin olması için standart çıktı, abaqus.AbaqusStdout örneğine ayarlanır. Örneğin, bir dosyaya str(sys.stdout) yazdıysanız, bunu elde edersiniz. Bununla birlikte, Python'un standart çıktısının orijinal tanımı sys.__stdout__'da saklanır. Standart çıktıyı tekrar tanımlamak için kullanabilir veya doğrudan yazmak için kullanabilirsiniz. Abaqus kurulumu 2.7'ye daha eski Python kullanarak olduğundan

, sen

import sys 

print >> sys.__stdout__, 'Opening ODB' 

basitçe bir işlevi oluşturmak, örneğin temizleyici bunu yapmak için yazabiliriz log, sizin için kirli işi yapacak ve daha sonra sadece log('some message') yazacaktır.

Standart çıktının tanımını öğrendikten sonra günlüğe kaydetmenin başka yolları da vardır, ancak bu sizin keşfetmeniz için size bağlıdır.

+0

Mükemmel cevap! Teşekkürler! Tam olarak istediğim şey buydu ve yapması gereken şeyi yapıyor! – UN4

+0

Bu "diğer yollarını" biraz inceleyebilir misiniz? Abaqus.sys üyelerini sys üyeleriyle değiştirmeyi denedim, bu yüzden standart yazdırma komutunu kullanabildim ama işe yaramadı. – flxh

+0

@flxh Muhtemelen saf baskı yaklaşımından çok daha fazla işlevsellik sunan 'logging' modülünü düşünüyordum. – hgazibara

İlgili konular