我想從python調用一個Fortran程序。我使用子進程中的Popen語句,如下所示:Python:用子進程調用Fortran並通過通信發出命令
p = Popen(['./finput'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
然後我想發送一些文件名到fortran程序。 Fortran程序從標準輸入讀取它們,然後打開文件。 如果我使用類似:
p_stdout = p.communicate(input='file1.dat\nfile2.dat\n')[0]
一切都很好,和Fortran程序工作正常。 但是我想給文件名作爲python程序內的變量。 所以,如果我用
p_stdout = p.communicate(input=file1+'\n'+file2+'\n')[0]
我Fortran程序無法打開文件名。該問題是,FORTRAN讀取字符串看起來像這樣
f i l e 1 . d a t
一個空白字符作爲第一個字符,一些奇怪的字符其間的每一個正確的字符。不幸的是,如果您單獨打印字符串的每個字符,這隻會顯示出來。如果你只是用
print*,file1
打印的文件名,你得到
file1.dat
所以我的問題是,爲什麼蟒蛇把這些奇怪的字符與子進程通信,更重要的是,如何我是否擺脫了?
千恩萬謝
你在哪裏獲取文件名?即如何創建'file1','file2'等? –
您可以顯示'print((file1,file2))'顯示的內容。 – glglgl