我正在尝试使用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但是,无论目录是否存在,inquire都会返回False,如果我执行该代码两次,则会得到一条错误消息。
无法生成dir,文件已经存在。
如果我用:
inquire(file='./docs/test', exist=dir_e)使用现有的文件测试,inquire返回true。
如何检查目录的存在?我使用的是ubuntu11.04和ifort编译器。
发布于 2014-07-10 02:54:45
下面是我经常使用的一个子例程--它使用您询问的条件:
subroutine create_directory( newDirPath )
! Author: Jess Vriesema
! Date: Spring 2011
! Purpose: Creates a directory at ./newDirPath
implicit none
character(len=*), intent(in) :: newDirPath
character(len=256) :: mkdirCmd
logical :: dirExists
! Check if the directory exists first
! inquire( file=trim(newDirPath)//'/.', exist=dirExists ) ! Works with gfortran, but not ifort
inquire( directory=newDirPath, exist=dirExists ) ! Works with ifort, but not gfortran
if (dirExists) then
! write (*,*) "Directory already exists: '"//trim(newDirPath)//"'"
else
mkdirCmd = 'mkdir -p '//trim(newDirPath)
write(*,'(a)') "Creating new directory: '"//trim(mkdirCmd)//"'"
call system( mkdirCmd )
endif
end subroutine create_directory根据您使用的编译器,您必须决定哪些条件适合您。
不幸的是,我无法访问nagfor,也不知道它是如何对待目录的。
https://stackoverflow.com/questions/9522933
复制相似问题