【问题标题】:Printing to terminal using Abaqus nogui python interface使用 Abaqus nogui python 接口打印到终端
【发布时间】:2016-04-11 09:33:40
【问题描述】:

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

没有任何东西输出到终端。尽管如此,我的代码运行良好并完成了它应该做的一切。

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

【问题讨论】:

    标签: python terminal output abaqus


    【解决方案1】:

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

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

    由于 Abaqus 安装使用的 Python 版本早于 2.7,因此您可以编写

    import sys
    
    print >> sys.__stdout__, 'Opening ODB'
    

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

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

    【讨论】:

    • 完美答案!谢谢!这正是我想要的,它也正是它应该做的!
    • 您能稍微检查一下这些“其他方式”吗?我试图用 sys 的成员覆盖 abaqus.sys 的成员,所以我可以使用标准的打印命令,但它不起作用。
    • @flxh 我很可能想到了logging 模块,它提供了比纯打印方法更多的功能。
    • 谢谢。但是你能解释一下打印后的“>>”是什么吗?
    • @JohannBzh 这是 Python 2 中 print 语句语法的一部分,它允许您指定 print 语句产生的输出的目的地。它可以是任何文件对象,标准输出 (stdout) 是默认值。
    猜你喜欢
    • 2014-11-02
    • 1970-01-01
    • 2014-06-18
    • 2015-11-04
    • 1970-01-01
    • 2020-08-15
    • 2013-06-27
    • 2013-09-14
    • 2011-01-08
    相关资源
    最近更新 更多