在循环中读取fortran中的多个文件
我想通过使用文件名格式化系统在循环中读取Fortran中的多个文件。问题是文件名中的数字彼此不直接跟随。文件名的示例有4e3_2048_380_40_3e9.ksz_cl.txt、4e3_2048_200_80_2e8.ksz_cl.txt。文件名中的第三、第四和第五个数字构成一个3x3网格。第一个数字从140到260,第二个数字从40到80,第三个数字从2e8到2e9 我已经在像这样的线程中搜索了答案,但它似乎没有回答我的问题。我下面的代码目前打印出4e3_2048_01.ksz_cl.txt在循环中读取fortran中的多个文件,fortran,Fortran,我想通过使用文件名格式化系统在循环中读取Fortran中的多个文件。问题是文件名中的数字彼此不直接跟随。文件名的示例有4e3_2048_380_40_3e9.ksz_cl.txt、4e3_2048_200_80_2e8.ksz_cl.txt。文件名中的第三、第四和第五个数字构成一个3x3网格。第一个数字从140到260,第二个数字从40到80,第三个数字从2e8到2e9 我已经在像这样的线程中搜索了答案,但它似乎没有回答我的问题。我下面的代码目前打印出4e3_2048_01.ksz_cl.txt
program readfiles
implicit none
integer :: i, N
Logical, Save :: first_time = .True.
CHARACTER(len=25) :: FN
N=3 !--arbitrary number of files
if(first_time) then
DO I=1,N
WRITE(FN,10)I
WRITE(6,*)FN
OPEN(1,FILE=FN, status='replace')
CLOSE(1)
END DO
10 FORMAT('4e3_2048_',I2.2,'.ksz_cl.txt')
endif
end program readfiles
虽然有可能想出一个方案来实现这一点,但这已经够复杂了,您可能想简单地阅读目录内容。或者更简单地添加一个包含要读取的文件列表的文件可能很有用:您是如何生成这些文件的?您可以使用相同的工具(创建文件名的逻辑)生成要读取的文件列表,可能还包含相关参数(网格索引或参数值)。这些数字之间的跨距是多少?例如,1e8-1e9之间有90000000个整数。你真的有那么多的外部文件吗?根据您的答案,您可以循环使用所有三种可能的数字,然后
inquire()
检查该文件是否存在,如果存在,请阅读该文件。当然,也可以想出一个方案来实现这一点,这已经够复杂了,你可能只想看看如何读取目录内容,或者更简单地添加一个包含你要读取的文件列表的文件可能有用:你是如何生成这些文件的?您可以使用相同的工具(创建文件名的逻辑)生成要读取的文件列表,可能还包含相关参数(网格索引或参数值)。这些数字之间的跨距是多少?例如,1e8-1e9之间有90000000个整数。你真的有那么多的外部文件吗?根据您的答案,您可以循环使用所有三种可能的数字,然后inquire()
检查此类文件是否存在,如果存在,请阅读。