Запустите скрипт Python с помощью команды abaqus

У меня есть командный файл (.cmd), который я использую для запуска окон командной строки Abaqus. Затем я использую команду abaqus python test.py для запуска команды python внутри Abaqus.

Теперь я хотел бы использовать для этого сценарий Python. Я пробую что-то подобное, но не получается. Кто-нибудь знает фокус?

Спасибо !!

import subprocess

AbaqusPath=r"C:\Abaqus\script\abaqus.cmd"
args= AbaqusPath + "-abaqus python test.py"
subprocess.call(args)

person Coolpix    schedule 12.07.2016    source источник
comment
Что ты пытаешься сделать ? запустить сценарий, который выполняет какие-то действия в CAE, или запустить сценарий, который выполняет некоторый анализ и т. д. (но не выполняет задачи CAE)?   -  person will    schedule 12.07.2016
comment
Скрипт, запускающий анализ (чтение odb-файла), поэтому никаких задач CAE   -  person Coolpix    schedule 13.07.2016


Ответы (2)


Используя .cmd-файл:

Этот способ может работать с файлом cmd:

abaqusPath = "C:\\Abaqus\\script\\abaqus.cmd /C"
args = AbaqusPath + "abaqus python test.py"
subprocess.call(args)

Флаг / C необходим для запуска команды и ее завершения.

Самый простой способ:

Просто добавьте папку с командами abaqus (типовой путь C: \ Abaqus \ Commands) в переменную PATH системы. Это даст доступ к таким командам, как abaqus, abq6141 и т. Д., Напрямую в cmd.

Когда просто используйте в своем скрипте следующее:

subprocess.call("abaqus python test.py")

Используя .bat-файл:

Если настройка переменной PATH невозможна и первый способ не работает, .bat-файлы из abaqus можно использовать следующим образом:

abaqusPath = "C:\\Abaqus\\Commands\\abaqus.bat "
args = AbaqusPath + "python test.py"
subprocess.call(args)
person nikolay-pv    schedule 13.07.2016
comment
Могу ли я получить ответ на вызов подпроцесса? Чтобы знать, если что-то пошло не так? - person Coolpix; 13.07.2016
comment
Да, насколько я понимаю, все они возвращают значение выхода. Просто назначьте его какой-нибудь переменной, например a = subprocess.call (). Затем вы можете проверить, не равно ли оно нулю. - person nikolay-pv; 13.07.2016

У меня никогда не было успеха, используя только строковые аргументы для функций подпроцесса.

Я бы попробовал так:

import subprocess

abaqus_path = r"C:\Abaqus\script\abaqus.cmd"
subprocess.call([abaqus_path, '-abaqus', 'python', 'test.py'])
person Wayne Werner    schedule 13.07.2016