我正在写一个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”来完成。
答案 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
到可执行文件的位置,但运行命令执行。这确实会导致您始终在当前所在的文件夹中打开文件。