用gfortran打开一个目录

时间:2016-06-18 22:03:16

标签: 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='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扩展程序打开文件夹Num_Ber? 例如,如果Num_Ber为56,我想打开文件夹:Result_56。 如何检查此文件夹是否已打开,如果是,我想停止执行此子例程:Call execute_command_line

1 个答案:

答案 0 :(得分:1)

简短回答: 您要做的是更改fmt_3

的定义
Character(Le),parameter::fmt_3='mkdir -p Result'

使用选项-pmkdir将创建目录(如果该目录不存在),如果存在则不执行任何操作。

答案很长:

根据您的问题描述,内在查询功能可用于执行您想要执行的操作。 以下陈述

inquire (file=fileName, exist=existStatus)

其中fileName是包含目录路径的字符串变量,existStatus是逻辑变量,如果目录存在,则.true.将返回existStatus或{{ 1}}如果没有。

打开一个目录,我猜你不是说你在说什么,你不想乱搞目录。文件系统中的目录是一个容器,您希望将该容器的内部留给操作系统并使用系统提供给您的接口:

  • 创建目录;
  • 列出目录的内容;
  • 在目录中创建文件;
  • 从目录中删除文件;

现在在询问目录是否存在之后,如果它不存在,你可以创建它。

.false.

如果这就是您想要实现的目标,您可以使用mkdir选项inquire (file=fileName, exist=existStatus) if(.not.existStatus)then !the code to create the directory here end if 。如果目录不存在,则-p创建目录,如果目录已存在,则不执行任何操作。