回 帖 发 新 帖 刷新版面

主题:Fortran 如何批处理读取文件

各位大侠,请教:

如何批处理读取文件?
文件名是按时间序列命名的,R+year+month+day 的格式

如 R20060101, R20060102,.... R20060131,R20060201....R20061231.

在MATLAB里面好像是 R%y4%m2%d2.txt 来批处理读取。
在Fortran里怎么解决这个问题啊?

谢谢啦!

回复列表 (共9个回复)

沙发

请看置顶贴FAQ或者看置顶贴<数值字符转换>

板凳

各位,还是没有解决,最还给出明确的code,谢谢!我是新手!

3 楼

看置顶帖啊
[url]http://www.programfan.com/club/post-102851.html[/url]
问题2

4 楼

把你的数据贴出来,或QQ传给我。我给你看看

5 楼

各位大侠,非常感谢你们的回复。置顶帖中关于批处理读取文件的帖子我已经看了。
 
帖子里是批处理AA1-AA4000.txt文件,文件名是1-4000的数字序列。

而我要读取的是时间序列的文件,即1月1日-12月31日,year+month+day 的形式。因此置顶帖中的例子不适用我这个问题。

文件名为 (2006年365天的数据,共365个文件)
pre.20060101.dat
pre.20060102.dat
pre.20060103.dat
... ...
pre.20060131.dat
pre.20060201.dat
pre.20060202.dat
... ...
pre.20061231.dat

单个文件读取已经完成,但是如何批处理还没有解决。

请各位大侠继续支持。

6 楼

既然是有规律你就可以做循环来进行读取, 每次循环读取一个文件.
例如做3层循环, 分别是年循环(如果就一年那就不用循环了), 月循环, 日循环. 不难吧.

7 楼

我的方法:先把文件名:pre.20060101.dat,pre.20060102.dat,......输入到一个文件中,然后依次读取,赋给字符型变量数组filenames(i),然后就可以循环打开所有文件。
程序如下:

      program test
      integer::a(12)=[31,28,31,30,31,30,31,31,30,31,30,31]
    character(len=12),allocatable::filenames(:)
      m=sum(a(1:12))
    allocate(filenames(m))
      open(10,file='filenames.txt')
      do i=1,12
      do j=1,a(i)
       write(10,'(a8,i2.2,i2.2,a4)') 'pre.2006',i,j,'.dat'
      enddo
      enddo
      rewind 10
    do i=1,m
     read(10,*) filenames(i)
c     open(i,file=filenames(i)) !我这没有那些文件,所以注释掉了。
    enddo
    close(10)
    end program test

8 楼

integer year
character(4):: yrstr
write(unit=yrstr,fmt="(i4)") year
月日类似
open(11,file='\R'//yrstr//..//..)

9 楼

我的情况和楼主差不多,都是时间序列的批量文件,但我的资料不是连续的,比如5月1日没有资料,2号3号又有,是不是不能做循环?

我来回复

您尚未登录,请登录后再回复。点此登录或注册