вызов подпроцесса python Abaqus не удался, неожиданно появился только Matlab

Я вызываю командную строку для запуска Abaqus из интерпретатора Python. Однако в этом процессе нет статистики двигателя Abaqus. Открывается только программа Matlab, не знаю почему. Взаимодействует ли эта команда с моим Matlab? Кто-нибудь может указать что-то не так с моим вызовом подпроцесса? Спасибо

import subprocess
process=subprocess.call('abaqus', 'cae', 'script=C:\Users\Desktop\modelAExample.py')

Если я запущу следующую команду из cmd напрямую, она будет работать

abaqus cae script=modelAExample.py

person rifle123    schedule 28.03.2017    source источник
comment
Ну, во-первых, в этом пути наверняка много неэкранированных обратных слэшей...   -  person kindall    schedule 28.03.2017
comment
все эти аргументы должны быть одним списком, например: subprocess.call(['abaqus', 'cae', 'script=C:\\Users\\Desktop\\modelAExample.py']) (обратите внимание на добавленные квадратные скобки)   -  person agentp    schedule 28.03.2017
comment
@agentp Я пробовал это. Но каждый раз, когда я запускаю это. Ничего не происходит только с неожиданным открытием Matlab.   -  person rifle123    schedule 28.03.2017
comment
попробуйте использовать полный путь для abaqus. см. здесь stackoverflow.com/q/43037012/1004168. Вы хотите, чтобы графический интерфейс abaqus открылся? Если не использовать noGUI= вместо script=   -  person agentp    schedule 28.03.2017


Ответы (1)


Я собирался написать комментарий, но он не будет правильно отформатирован. Возможно, ваш скрипт завершает работу и не ожидает завершения процесса.

Попробуй это:

from subprocess import PIPE, Popen
import os

path = os.path.join("c:", "Users", "Desktop", "modelAExample.py")

if os.path.exists(path):
    proc = Popen(['abaqus', 'cae', 'script={}'.format(path)], stdout=PIPE)
    proc.communicate()

else: 
    print("Bad path")

Кроме того, вы указываете правильный путь к modelAExample.py? Я не вижу, чтобы вы указывали имя пользователя, которое обычно следует за C:\Users\

person NuclearPeon    schedule 28.03.2017
comment
Да, я просто пропустил имя пользователя при вводе этого вопроса. Код выводит Bad Path! Однако путь именно туда. - person rifle123; 30.03.2017
comment
я думаю, вам нужна косая черта join("c:/",.. - person agentp; 30.03.2017
comment
@agentp Согласно этому комментарию SO с рейтингом, вам не нужна косая черта: stackoverflow.com/a/7767925/1703772 . @rifle123 Похоже, ваш путь неверен. Один из способов проверить вашу проблему — запустить abaqus cae и сравнить результат с тем, что вы видите при указании атрибута script. Если окно открывается в обоих режимах, скорее всего, вы выбрали неправильный путь. - person NuclearPeon; 01.04.2017