2017-03-28 1 views
0

私はPythonインタープリタからAbaqusを実行するためにコマンドラインを呼び出しています。ただし、このプロセスではAbaqusエンジンの統計情報はありません。 Matlabプログラムだけがオープンしています、理由は分かりません。このコマンドは私のMatlabとやりとりしますか?誰でも私のサブプロセスコールに間違っていることを示すことができますか? THXPythonサブプロセス呼び出しAbaqusが失敗しました。Matlabだけが予期せずに表示されました。

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

私が直接CMDから次のコマンドを実行した場合、それは

abaqus cae script=modelAExample.py 
+0

よくあることに、そのパス名にはエスケープされていないバックスラッシュがたくさんあります... – kindall

+0

すべてのthos argsは以下のような単一のリストでなければなりません: 'subprocess .call(['abaqus'、 'cae'、 'script = C:\\ Users \\ Desktop \\ modelAExample.py']) '(角括弧を付けてください) – agentp

+0

@agentp私はこれを試しました。しかし、毎回私はこれを実行します。 Matlabが予期せぬことで開かれただけで何も起こりません。 – rifle123

答えて

0

に動作します、私はコメントを書くつもりだったが、それはこれを正しくフォーマットしないでしょう。あなたのスクリプトは終了しており、プロセスを待っていない可能性があります。

これを試してみてください:

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\

+0

はい、私はこの質問を入力するときにユーザー名を省略しました。コードがBad Pathを出力します!しかし、パスは正確にそこにあります。 – rifle123

+0

あなたはそこにスラッシュが必要だと思う 'join(" c:/ "、..' – agentp

+0

@agentpこの評価されたSOのコメントによれば、スラッシュは必要ありません:http://stackoverflow.com/a/7767925/1703772。@ rifle123あなたのパスが間違っているように見えます。問題を確認する方法の1つは、 'abaqus cae'を実行し、' script'属性を指定して見ているものと結果を比較することです。あなたのパスが間違っている可能性が高いです。 – NuclearPeon

関連する問題