测试目录是否存在

Seb*_*ian 6 fortran fortran90 intel-fortran

我正在尝试使用Fortan90验证目录是否存在.在我发现的各种网站上:

logical :: dir_e
inquire(file='./docs/.', exist=dir_e)

if ( dir_e ) then
  write(*,*) "dir exists!"
else
  ! workaround: it calls an extern program...
  call system('mkdir docs')
end if
Run Code Online (Sandbox Code Playgroud)

但是,inquire返回False目录是否存在,如果我执行此代码两次,我收到一条错误消息

无法制作dir,文件已经存在

如果我使用:

inquire(file='./docs/test', exist=dir_e)
Run Code Online (Sandbox Code Playgroud)

使用现有文件测试,inquire返回true.

如何检查目录的存在?我正在使用ubuntu 11.04和ifort编译器.

Azr*_*000 5

以下应该有效:

INQUIRE (DIRECTORY=dir, EXIST=ex [, DIRSPEC=dirspec] [, ERR=label] [, IOSTAT=i-var] )
Run Code Online (Sandbox Code Playgroud)

我在这台机器上没有ifort所以我无法测试它.

附录:最初发布的代码与gfortran一起使用.该DIRECTORY声明适用于ifort但不适用于gfortran.

而如果以了解更多信息检查:http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/win/compiler_f/lref_for/source_files/rfinquir.htm#rfinquir

  • 我不建议取决于非标准扩展名.有太多的情况,这意味着移植到另一个编译器的困难,这可能是意外需要的. (4认同)
  • 适用于ifort 12.0.2.137 Build 20110112.只是出于好奇而进行了测试.不建议使用. (2认同)

小智 5

Fortran标准95,2003和2008没有指定,如何查询应该处理目录.根据我在Linux下的经验,gfortran将它们视为文件,而ifort则不然.目录语句是ifort的专有功能,因此应该避免使用.

最安全的是测试所述目录中的文件.