主题:Fortran 如何批处理读取文件
smallpine
[专家分:0] 发布于 2010-05-19 17:59:00
各位大侠,请教:
如何批处理读取文件?
文件名是按时间序列命名的,R+year+month+day 的格式
如 R20060101, R20060102,.... R20060131,R20060201....R20061231.
在MATLAB里面好像是 R%y4%m2%d2.txt 来批处理读取。
在Fortran里怎么解决这个问题啊?
谢谢啦!
回复列表 (共9个回复)
沙发
yeg001 [专家分:14390] 发布于 2010-05-19 19:33:00
请看置顶贴FAQ或者看置顶贴<数值字符转换>
板凳
smallpine [专家分:0] 发布于 2010-05-25 11:01:00
各位,还是没有解决,最还给出明确的code,谢谢!我是新手!
3 楼
臭石头雪球 [专家分:23030] 发布于 2010-05-25 11:51:00
看置顶帖啊
[url]http://www.programfan.com/club/post-102851.html[/url]
问题2
4 楼
doctorlive [专家分:800] 发布于 2010-05-25 14:30:00
把你的数据贴出来,或QQ传给我。我给你看看
5 楼
smallpine [专家分:0] 发布于 2010-05-25 22:32:00
各位大侠,非常感谢你们的回复。置顶帖中关于批处理读取文件的帖子我已经看了。
帖子里是批处理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 楼
yeg001 [专家分:14390] 发布于 2010-05-25 23:10:00
既然是有规律你就可以做循环来进行读取, 每次循环读取一个文件.
例如做3层循环, 分别是年循环(如果就一年那就不用循环了), 月循环, 日循环. 不难吧.
7 楼
doctorlive [专家分:800] 发布于 2010-05-26 08:14:00
我的方法:先把文件名: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 楼
lilymarcus [专家分:0] 发布于 2010-05-29 10:20:00
integer year
character(4):: yrstr
write(unit=yrstr,fmt="(i4)") year
月日类似
open(11,file='\R'//yrstr//..//..)
9 楼
qwert590202 [专家分:0] 发布于 2010-05-29 15:58:00
我的情况和楼主差不多,都是时间序列的批量文件,但我的资料不是连续的,比如5月1日没有资料,2号3号又有,是不是不能做循环?
我来回复