Fortran从当前目录打开

时间:2013-08-27 02:11:32

标签: fortran gfortran

我正在写一个fortran程序,我想知道是否可以从程序本身所在的同一目录中打开一个文件。

我正在使用Ubuntu 12.04 BTW。

例如,如果我将编译好的程序放在“/ home / username / foo”目录下,我希望程序打开文件“/home/username/foo/bar.txt”并写“Hello!”在它。

我的最小工作示例如下:

program main

implicit none

open(unit=20,file="bar.txt",action="write")

WRITE(20,*) "Hello!"

close(20)

end program main

当我使用gfortran编译时,无论我把程序文件放在哪里,它都会打开并写入文件“/home/username/bar.txt”。

另一方面,当我为windows编译(使用mingw)创建一个.exe文件并在Windows中执行它时,它会执行我想要的操作,它会打开放置可执行文件的文件。

[编辑]我刚刚发现,如果我通过双击它来执行程序,它将打开程序目录中的文件,但是当我从终端执行它时,它会打开“/ home / username /”,所以也许更多关于我从终端发送命令的方式,目前我通过以下命令“/ home / username / foo / myprogram”来完成。

1 个答案:

答案 0 :(得分:1)

我也在使用gfortran 4.6.3运行Ubuntu 12.04,但我没有遇到过这种情况。无论我放置可执行文件,执行后都会bar.txt

也就是说,如果你想要一个特定地方的文件,那么按如下方式声明一个字符串:

character(26) :: filename
filename="/home/username/foo/bar.txt"

然后将文件打开为

open(unit=20, file=filename)

你在家是免费的。

修改

我刚注意到你的编辑。我想你打开终端并且不cd到可执行文件的位置,但运行命令执行。这确实会导致您始终在当前所在的文件夹中打开文件。