使用 Abaqus nogui python 界面打印到终端

Printing to terminal using Abaqus nogui python interface

当 运行 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...")

没有任何内容输出到终端。尽管如此,我的代码运行良好,并完成了它应该做的所有事情。

有人知道如何解决这个问题吗?

Abaqus 自动将标准输出重新定义为它自己的自定义对象。准确地说,标准输出被设置为 abaqus.AbaqusStdout 的一个实例。如果您要将 str(sys.stdout) 写入文件,这就是您将得到的结果。

然而,Python 的标准输出的原始定义存储在 sys.__stdout__ 中。您可以使用它再次重新定义标准输出或直接使用它写入它。

因为 Abaqus 安装使用 Python 早于 2.7,你可以写

import sys

print >> sys.__stdout__, 'Opening ODB'

为了让它更简洁,只需创建一个函数,例如log,它会为你做脏活,然后只写 log('some message')

一旦您了解了标准输出的定义,您还可以使用其他方式进行日志记录,但这取决于您自己探索。