目前有個(gè)需求口蝠,即由python的subprocess模塊調(diào)用fortran語言編譯的二進(jìn)制執(zhí)行文件冈钦;
其中fortran文件需要讀取來自屏幕的輸入信息,一直苦尋方法而不得其門锁摔,終于在搜索引擎的幫助下里烦,找到了這個(gè)答案,解決了我所有的問題.
假如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
...
下面是各種操作
...
# 同時(shí)假設(shè)我們利用gfortran將程序編譯為foo
那么對(duì)需要兩個(gè)參數(shù)的執(zhí)行文件哥艇,無法在跟在命令后面直接輸入?yún)?shù)绝编,需要使用標(biāo)準(zhǔn)輸入與子進(jìn)程通信進(jìn)行傳遞。
# 參考答案中內(nèi)容
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}\n{param2)\n'
pout = proc.communicate(input=input_cmd.encode('utf8'))
# 好了貌踏, 現(xiàn)在我們已經(jīng)向子進(jìn)程傳遞了需要的參數(shù)
# pout的就是子進(jìn)程執(zhí)行完畢的輸出結(jié)果