我試過尋找這個答案,因爲它看起來不太複雜,但我沒有成功。我正在嘗試使用一些舊的FORTRAN代碼並將它帶入Python,以便我可以使用它。在這個過程中,我遇到了一些關於文件I/O的問題,並且我正試圖理解f2py如何處理這個問題。我正在用gfortran開發Ubuntu 11.10。例如,我嘗試使用下面的子程序:f2py和WRITE語句
f2py -c -m inout inout.f
它創建inout.so共享庫:
C FILE INOUT.F
SUBROUTINE INOUT
i (NAME, STUFF)
Cf2py Intent(in,out) NAME, STUFF
CHARACTER*6 NAME, STUFF
OPEN(unit=1,file=NAME)
WRITE(1,100) STUFF
100 FORMAT(A8)
RETURN
END
我然後使用gfortran和f2py編譯。然後在Python中,我嘗試一個簡單的測試:
python
>>> import inout
>>> inout.inout('test','hello')
('test', 'hello ')
然後退出Python並打開新創建的「測試」文件,它是空的。我可以在屏幕上打印沒有問題,但打印到文件似乎不起作用。任何指導將不勝感激。 f2py文檔沒有提到WRITE語句。
你的numpy和gcc的版本是什麼?我有numpy(v1.5.1)和gcc(4.1.2),但成功輸出內容到'test'文件。 – nye17
gcc 4.6.1,numpy 1.5.1 – Dave
這很奇怪,因爲相同的代碼適合我。我建議你嘗試切換到另一個Fortran編譯器進行測試。不確定python版本是否會影響,但我使用python2.7,只是FYI。 – nye17