Python 2.7 を使用して、サブプロセス スクリプトを実行するメイン スクリプトを作成しました。私の質問は、サブプロセスから特定の変数、たとえばベクトルをキャプチャする方法です。
vec_1, vec_2, vec_3
stdout
を使用して文字のマトリックスとしてスクリプトからを取得できることはわかっていますが、それはsubprocess.communicate()
私の意図した目的には合いません。これが私がこれまでに試したことです。
親スクリプト:
import subprocess
if __name__ == "__main__":
process = subprocess.Popen(["abaqus", "python", "childscript.py", \
"file"], shell=True, stdout=subprocess.PIPE)
process.wait()
pr = process.communicate()
子サブプロセス:
def function(a):
return vec_1, vec_2, vec_3
if __name__ == '__main__':
function()
shell=True を使用せずにサブプロセスを実行する方法を誰かが知っている場合のボーナス マーク。.bat ファイルを実行する必要があるため、シェルでのみ可能のようです。
編集
関数をメインスクリプトに直接インポートしない理由を明確にするために:
サブプロセスで実行されるプログラムである Abaqus には、独自の Python インターフェイスがあり、Python スクリプトを使用してデータ出力にアクセスできます。したがって、python スクリプトはプログラムを介して実行する必要があり、メインに統合することはできません。