使用gfortran打开文件夹
这是我的代码:使用gfortran打开文件夹,fortran,gfortran,Fortran,Gfortran,这是我的代码: Program Write_in_folder Implicit none Integer::Num_Ber Integer,parameter::Le=367 Character(Le)::Output Character(Le),parameter::fmt_1='("Result\Output_",i0,".txt")' Character(Le),parameter::fmt_2='(2x,i0)' Character(Le),parameter::fmt_3='mk
Program Write_in_folder
Implicit none
Integer::Num_Ber
Integer,parameter::Le=367
Character(Le)::Output
Character(Le),parameter::fmt_1='("Result\Output_",i0,".txt")'
Character(Le),parameter::fmt_2='(2x,i0)'
Character(Le),parameter::fmt_3='mkdir Result'
Write(*,*)"Enter the number:"
Read(*,*)Num_Ber
Write(Output,trim(adjustl(fmt_1)))Num_Ber
Call execute_command_line(trim(adjustl(fmt_3)))
Open(Unit=1,File=trim(adjustl(Output)),Status='Unknown')
Write(1,trim(adjustl(fmt_2)))Num_Ber
Close(Unit=1,Status='Keep')
Stop
End Program Write_in_folder
我想打开名为的文件夹:Result\u Num\u Ber
哪种解决方案好
如何检查同名文件夹是否已打开?如果是,则不需要执行此代码序列。“如何检查具有该名称的文件夹是否已打开?如果是,则不需要执行此代码序列。” 我喜欢使用INQUIRE来查询目录和文件
CHARACTER(LEN=80) :: Base_Name
CHARACTER(LEN=80) :: SomeDirectory
CHARACTER(LEN=256) :: Full_Name
INTEGER :: Len_SomeDirectory
LOGICAL :: Existentialism
!....
SomeDirectory = '/data/2017'
Len_SomeDirectory = LEN_TRIM(SomeDirectory)
!...
INQUIRE(DIR=SomeDirectory, EXIST=Existentialism)
IF(Existentialism) THEN
Full_name = SomeDirectory(1: Len_SomeDirectory) // '/' // Base_Name(1:LEN_TRIM(Base_Name))
ELSE
! Maybe create some directory...
ENDIF
! etc
然后STAT或GETFILEINFOQQ可以让您了解您是否有写权限
可能是最容易/最安全的查克和错误,如果没有目录。。。然后手动创建目录并重新运行程序
如果目录或文件没有写权限,那么“怎么办”的故事也是一样的。。。“查克并出错,然后重新分组。”“如何检查同名文件夹是否已打开?如果已打开,则无需执行此代码序列。”
我喜欢使用INQUIRE来查询目录和文件
CHARACTER(LEN=80) :: Base_Name
CHARACTER(LEN=80) :: SomeDirectory
CHARACTER(LEN=256) :: Full_Name
INTEGER :: Len_SomeDirectory
LOGICAL :: Existentialism
!....
SomeDirectory = '/data/2017'
Len_SomeDirectory = LEN_TRIM(SomeDirectory)
!...
INQUIRE(DIR=SomeDirectory, EXIST=Existentialism)
IF(Existentialism) THEN
Full_name = SomeDirectory(1: Len_SomeDirectory) // '/' // Base_Name(1:LEN_TRIM(Base_Name))
ELSE
! Maybe create some directory...
ENDIF
! etc
然后STAT或GETFILEINFOQQ可以让您了解您是否有写权限
可能是最容易/最安全的查克和错误,如果没有目录。。。然后手动创建目录并重新运行程序
如果目录或文件没有写权限,那么“怎么办”的故事也是一样的。。。“卡盘和错误并重新组合。”使用。您正在用一种叫做Fortran的语言编程。为什么要把你的听众限制在少数跟随标签的人?你的代码有什么问题吗?它做了你想做的吗?实际上,你说的“打开文件夹”是什么意思?移动到目录?打开文件?无法编译源代码。您是否遇到任何错误消息?您应该向我们显示错误消息。
execute\u命令行
完全错误。你可能会发现其中一些有用的@Holmz:如果你想到的是GETFILEINFOQQ(我找不到任何关于GETINFOQQ的信息),那么我想粗略的GFortran等价物应该是STAT:Use。您正在用一种叫做Fortran的语言编程。为什么要把你的听众限制在少数跟随标签的人?你的代码有什么问题吗?它做了你想做的吗?实际上,你说的“打开文件夹”是什么意思?移动到目录?打开文件?无法编译源代码。您是否遇到任何错误消息?您应该向我们显示错误消息。execute\u命令行
完全错误。你可能会发现其中一些有用的@Holmz:如果你想到GETFILEINFOQQ(我找不到任何关于GETINFOQQ的信息),然后我假设大致相当于GFortran的是STAT:需要哪个版本的GFortran来支持dir=
说明符来inquire
?这里是否已经涵盖了目录是否已“打开”?我不知道OP所说的打开目录是什么意思,@VladimirF:至少在POSIX世界中,您可以使用opendir()来“打开一个目录”,以获得一个“目录流”,您可以使用它来迭代所有目录条目。此外,您还可以打开()一个目录,该目录为您提供一个目录文件描述符,您可以使用该描述符,例如,使用openat()打开与该目录相关的文件。话虽如此,我知道没有Fortran编译器以某种方式将这些操作公开为Fortran IO单元,其次,OP看起来足够新手,他很可能对此一无所知。谢谢@francescalus-我猜“INQUIRE(DIR=…)”超出了标准,因此不在gfortran中。我被宠坏了,变得依赖了!DEC$和其他扩展。需要哪个版本的gfortran来支持dir=
说明符以inquire
?此处是否已涵盖目录是否已“打开”?我不知道OP所说的打开目录是什么意思,@VladimirF:至少在POSIX世界中,您可以使用opendir()来“打开一个目录”,以获得一个“目录流”,您可以使用它来迭代所有目录条目。此外,您还可以打开()一个目录,该目录为您提供一个目录文件描述符,您可以使用该描述符,例如,使用openat()打开与该目录相关的文件。话虽如此,我知道没有Fortran编译器以某种方式将这些操作公开为Fortran IO单元,其次,OP看起来足够新手,他很可能对此一无所知。谢谢@francescalus-我猜“INQUIRE(DIR=…)”超出了标准,因此不在gfortran中。我被宠坏了,变得依赖了!DEC$和其他扩展。