Python のシェルで Fortran プログラムを実行しようとしています。Fortran プログラムを呼び出して引数を渡すために使用subprocess
しています (2 つの入力ファイルが必要です)。これは私がそれを行う方法です:
COMMAND = '/path/to/FORTRAN/program << !\n' + INPUT_FILE1 + '\n' + INPUT_FILE2 +'\n!'
return = subprocess.call(COMMAND, shell=True)
残念ながら、Fortran プログラムは次のように終了します。
? FORTRAN Runtime Error:
? Attempt to read past end of file
? READ(UNIT=22,...
これは、入力ファイルや Fortran プログラムの問題ではありません。シェルでこれを実行すると:
$>/path/to/FORTRAN/program << !
>INPUT_FILE1
>INPUT_FILE2
>!
すべてが期待どおりに機能します (いいえAttempt to read past end of file
)。
Fortran のソースにアクセスできないので、そこで何が起こっているのかを確認できません。プログラムを呼び出す方法に関係していると思いますsubprocess
-何がわからないのですか。
Python 2.6.6 を使用しています。
簡単な説明: Fortran プログラムは 2 つの入力ファイルを要求しますが、それらをコマンド ライン オプションとして認識しません (プログラムの呼び出しで指定することはできません)。シェル スクリプト (バッチ モード) などから実行する場合は、return コマンドをキャプチャしてコマンドを実行する必要がありますが、2 つのファイルも提供する必要があります。は<< !
、より適切な用語がないための「リスト」を開きます。次のコマンドは、入力されるまで実行を待機するプログラムに渡されます!
。
私はこのアプローチを何度も成功させました (Fortran コードは異なります)。このアプローチでは、C シェルスクリプト (Python ではありません) を使用しました。