遍历变量文件名[复制]遍历变量文件名[复制](Looping over variable file

2019-05-12 11:56发布

这个问题已经在这里有一个答案:

  • 转换整数字符串在运行时创建输出文件名 9个回答

我使用Fortran语言上做巨大的数据集计算其分成多个文件。 该文件的名称是:

maltoLyo12per-reimage-set1.traj
maltoLyo12per-reimage-set2.traj
maltoLyo12per-reimage-set3.traj

我写信给做计算的代码如下:

fileLoop: do j = 31, 34

 OPEN(unit=31,status='old',file=fileplace//'maltoLyo12per-reimage-set1.traj')
 OPEN(unit=32,status='old',file=fileplace//'maltoLyo12per-reimage-set2.traj')
 OPEN(unit=33,status='old',file=fileplace//'maltoLyo12per-reimage-set3.traj')
 OPEN(unit=34,status='old',file=fileplace//'maltoLyo12per-reimage-set4.traj')

 ... operation....

close (j)
end do fileLoop

在运行过程中我想要的代码打开每个文件的时间和完成计算后关闭它们。 但上面的代码将打开所有文件一次,并在完成计算关闭它们一一之后。

于是,我就修改代码类似下面:

fileLoop: do j = 31, 34

 OPEN(unit=j,status='old',file=fileplace//'maltoLyo12per-reimage-set1.traj')

close (j)
end do fileLoop

但是在这里我现在面临与文件名的问题。 每次循环运行,文件名不会因为在文件名中的短语“设置1”的改变。 我想在文件名称中的数字与文件单元号31,32,33,34等改变像SET1,SET2,SET3等,随后

Answer 1:

是这样的:(编辑,以具有单元编号31〜34,文件名1〜4)

character (len=90) :: filename

fileLoop: do j = 31, 34

 write (filename, '( "maltoLyo12per-reimage-set", I1, ".traj" )' )  j - 30
 OPEN(unit=j,status='old',file=filename)

close (j)
end do fileLoop


文章来源: Looping over variable file names [duplicate]