【问题标题】:Opening a directory with gfortran使用 gfortran 打开目录
【发布时间】:2016-06-18 22:03:15
【问题描述】:

这是我的代码:

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

如何以Num_Ber 扩展名打开文件夹Result? 例如,如果Num_Ber 是 56,我想打开文件夹:Result_56。 如何检查此文件夹之前是否已打开以及是否要停止执行此子例程:Call execute_command_line?

【问题讨论】:

  • 请注意使用相关标签,您的问题几乎是看不见的。您当前的程序做了什么,它有什么问题?请 cpnfirm,ypu 是在打开文件(程序员称为目录)还是文件?无法打开文件夹,只能将当前目录移动到文件夹中。
  • 程序启动时我想用这个表格打开目录:Result_Num_Ber。如果这个文件夹已经存在,程序会跳过Call execute_command_line(trim(adjustl(fmt_3))),下一步他应该用这个表格打开目录中的文件:Output_Num_Ber。该怎么做?
  • 没有什么比打开一个目录更重要了。这样的操作根本不存在。您可以在目录中打开文件。

标签: fortran gfortran


【解决方案1】:

简短回答: 你要做的是改变fmt_3的定义

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

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

长答案:

根据您对问题的描述,可以使用内在查询功能来做您想做的事情。 以下声明

inquire (file=fileName, exist=existStatus)

其中fileName 是包含目录路径的字符串变量,existStatus 是逻辑变量,如果目录存在则返回existStatus 中的.true.,否则返回.false.

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

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

现在查询目录是否存在,如果不存在就创建。

inquire (file=fileName, exist=existStatus)
if(.not.existStatus)then
    !the code to create the directory here
end if

如果这就是您想要实现的全部,您可以使用 mkdir 的选项-pmkdir -p dirPath如果目录不存在则创建,如果目录已经存在则不执行任何操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 2011-04-03
    • 1970-01-01
    • 2016-07-21
    • 2021-12-18
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多