我試圖從Python的shell中執行Fortran程序。 我使用subprocess
來調用Fortran程序並傳遞參數(需要兩個輸入文件)。這就是我要做的事:Python子程序沒有正確執行程序
? FORTRAN Runtime Error:
? Attempt to read past end of file
? READ(UNIT=22,...
這是不是問題與輸入文件或Fortran程序:
COMMAND = '/path/to/FORTRAN/program << !\n' + INPUT_FILE1 + '\n' + INPUT_FILE2 +'\n!'
return = subprocess.call(COMMAND, shell=True)
不幸的是,Fortran程序與退出。當我在我的殼執行此:
$>/path/to/FORTRAN/program << !
>INPUT_FILE1
>INPUT_FILE2
>!
一切正常(無Attempt to read past end of file
)。
我無法訪問Fortran源代碼,因此我無法檢查那裏發生了什麼。我認爲這與我通過subprocess
調用程序的方式有關 - 我只是無法弄清楚什麼。
我正在使用Python 2.6.6。
快速說明:Fortran程序會提示輸入兩個文件,但它不會將它們識別爲命令行選項(它們不能與調用程序一起提供)。如果你想運行它 - 比如說一個shell腳本(批處理模式) - 你需要捕獲return命令來執行命令,但也要提供這兩個文件。 << !
由於缺少更好的術語而打開「列表」。下列命令被傳遞給等待執行的程序,直到輸入!
。
我已經成功地多次使用這種方法(不同的Fortran代碼),並使用這個方法,使用C shell腳本(不是Python)。
我對從終端運行FORTRAN不夠了解 - << <<的意義是什麼?那是從「標準輸入」還是以其他方式閱讀?也許問題是你提交輸入文件作爲參數,但它期望它將要解析的緩衝區。很難說沒有關於該計劃的更多信息。 –
我試圖通過調用一個轉儲它的標準輸入的小程序進行再現,並且在這種情況下命令行和子進程都可以工作。 –