PythonのsubprocessでFortranを呼び出す

984 ワード

pythonのsubprocessモジュールがfortran言語でコンパイルされたバイナリ実行ファイルを呼び出す必要がある.
その中でfortranファイルはスクリーンからの入力情報を読み取る必要があり、ずっと方法を探してドアを探すことができず、ついに検索エンジンの助けの下で、この答えを見つけて、私のすべての問題を解決しました.
fortranファイルが次の場合:
program main

character(80)    :: param1, param2

write(*,*) 'Now read the first parameters!'
read(*, '(a)') param1
write(*,*) 'Now read the second parameters!'
read(*, '(a)') param1
...
       
...
#         gfortran      foo

では、2つのパラメータが必要な実行ファイルについては、コマンドの後に直接パラメータを入力することはできません.標準入力を使用してサブプロセスと通信する必要があります.
#        
import subprocess
proc = subprocess.Popen([exec_dir], stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                        stderr=subprocess.STDOUT)
param1 = 'apwieurpqwuier wer '
param2 = 'awe;foui awef; '
input_cmd = f'{param1}
{param2)
' pout = proc.communicate(input=input_cmd.encode('utf8')) # , # pout