通过批处理文件运行 abaqus python 脚本?

Posted

技术标签:

【中文标题】通过批处理文件运行 abaqus python 脚本?【英文标题】:Running an abaqus python script via batch file? 【发布时间】:2017-01-18 16:42:13 【问题描述】:

我编写了一个 python 脚本(或函数),它获取一些参数并需要由 abaqus 运行,我想通过一个批处理文件来执行此操作。我是批处理文件的新手,不知道如何通过 abaqus 在不同的路径中运行 python 脚本。例如,假设python代码路径为D:\pythonscript\test.py

【问题讨论】:

显示脚本中的实际内容可能会很有启发性 这是一个 python 代码,它获取几个变量并在 abaqus 中执行一些活动,仅此而已。 【参考方案1】:

这应该可行,您必须更新您的 Abaqus 路径,因为我猜您的版本是更新的。

"C:\Abaqus\6.10-EF2\exec\abq610ef2.exe" cae script=D:\pythonscript\test.py %*

【讨论】:

它不起作用。如果我的脚本路径之间有空格,有什么问题吗? 如果您打开 cae,如果您选择文件 - 运行脚本,脚本是否有效?您是否也将 abaqus 路径设置为您正在使用的路径?当您运行批处理文件时,会打开 cmd 并显示任何消息。让我知道你的进展情况 是的,当我通过 Abaqus GUI 中的运行脚本选项运行它时,它可以正常工作。为了获取安装 abaqus 的路径,我右键单击桌面上的 ABAQUS 图标,然后“打开文件位置”。但是我只在此路径中看到 abq6134.bat 而不是任何 .exe 文件,当我搜索 Abaqus CAE.exe 并找到它的路径时,与您提到的路径相比,此路径非常不同,我认为这不应该所以。我可以插入 abq6134.bat 路径而不是 Abaqus CAE.exe 吗? 如果您在记事本中打开该批处理文件,它应该包含类似这样的内容 "@echo off "C:\Abaqus\6.13-4\code\bin\abq6131.exe" %*" - 这是您需要的路径。 感谢您的帮助,它成功了。但是有一点。当我们的路径(这里是 .py 文件路径)之间有空格时,我们必须将路径放在双引号之间。你知道如果我想从 abaqus 退出我该怎么做吗?【参考方案2】:

如果你想将信息从批处理文件传递给你的 python 脚本,你需要sys

import sys
inodb = openOdb(path=str(sys.argv[1])) #for example

argv 是发送到 python 脚本的参数列表。 argv[0]是脚本本身的名字和路径,后面的都是空格。

然后在你的批处理文件中(例如):

for %%f in (.\*.odb) do (
    abaqus python D:\pythonscript\test.py %%f
)

这适用于独立脚本。您必须针对cae 脚本对其进行一些修改,但我不再使用它们(意味着我需要一个供不应求的许可证)所以我不确定如何。

【讨论】:

【参考方案3】:

您可以在 .bat 文件中使用以下行让 Abaqus 运行 python 脚本:

start abaqus cae script="C:<location_of_.py_script>\<scriptname>.py"

我建议在 python 脚本本身中收集 python 脚本的参数,或者使用 input() 函数,或者通过在其他地方读取输入文件。您可以在 python 脚本中指定在哪里可以找到包含参数的文件。

【讨论】:

你可能是对的,我并不声称自己是编程专家。但是我了解到编程需要严格的语法,我无法弄清楚“%*”标记代表什么。我还试图找到一个 abaqus.exe 文件或上面提到的文件,但我找不到 abaqus 的可执行文件。我确实有一个 SIMULIA 文件夹,其中包含许多我没有彻底搜索过的子文件夹,并且搜索选项给了我大量的 .exe 文件。刚刚发现上面的命令对我有用,希望它可以帮助别人。【参考方案4】:

你应该写:

abaqus cae noGUI="Full path to your code"

如果想看模拟,把“noGUI”换成“脚本”

【讨论】:

以上是关于通过批处理文件运行 abaqus python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

从命令行停止 Abaqus 中正在运行的 Python 脚本

在 Abaqus python 中对 Python3.5 的外部调用不起作用

abaqus 如何用python输出坐标 不是在后处理当中。就是在建模当中 我需要获取一些点的坐标信息

将关键字插入 .inp 文件的 Abaqus Python 命令

在Abaqus中运行连续作业时,仅编译一次用户子例程

在 Abaqus 中运行连续作业时只编译一次用户子程序