首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python脚本启动时等待算盘作业完成

从python脚本启动时等待算盘作业完成
EN

Stack Overflow用户
提问于 2017-01-14 12:51:04
回答 2查看 673关注 0票数 1

我正在尝试通过Windows 8机器上的命令提示符从Python运行Abaqus脚本。

我遇到的问题是,我不能让Python脚本等到Abaqus作业完成后再继续。

下面是我尝试过的一些代码,一次一个:

代码语言:javascript
复制
os.popen('abaqus job=plate ask_delete=OFF')
代码语言:javascript
复制
os.system('abaqus job=plate ask_delete=OFF')
代码语言:javascript
复制
os.system('abaqus job=plate ask_delete=OFF')
代码语言:javascript
复制
subprocess.call('abaqus job=plate ask_delete=OFF',shell=True)
代码语言:javascript
复制
subprocess.check_call('abaqus job=plate ask_delete=OFF',shell=True)

我还尝试在子进程工具之后使用wait命令,如下所示:

代码语言:javascript
复制
p1 = subprocess.check_call('abaqus job=plate ask_delete=OFF',shell=True)
p1.wait()

但我得到的错误是:AttributeError: 'int' object has no attribute 'wait'

我不想使用time.sleep(),因为这会在我的代码中造成相当多的停机时间。我使用的是Python 3.5.2和Anaconda 4.2.0 (64位)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-16 03:43:31

您需要包含abaqus关键字"interactive“。例如:

abaqus myjob=bob1 ask_delete=off interactive

否则,它将在后台运行,所有输出都会输出到bob1.log。此外,还有一个内置的python环境,安装了abaqus,可用于自动运行abaqus作业。如果您使用这个"abaqus“python,则有更多用于作业控制和监视的选项。

票数 5
EN

Stack Overflow用户

发布于 2017-01-15 19:46:07

默认情况下,函数call(...)check_call(...)都会等待命令完成。只是为了调试,通过Popen调用该命令,并使用完整路径'C:...\abaqus.exe ...‘运行'abaqus’。

代码语言:javascript
复制
import subprocess

cmd = subprocess.Popen('abaqus job=plate ask_delete=OFF', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
out, err = cmd.communicate()
code = cmd.returncode

print(code) # should 0 to indicate the command run successfully
print(out)  # what was piped to stdout
print(err)  # what was piped to stderr
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41646900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档