主题:循环读取不同文件中多个文本文档中的不同行
program ex02
implicit none
integer i,j,k,m,n
integer jb(350),jbp(14,350),wind(350,2),windp(14,731,2),gd(350),gdp(14,731),lines,a
integer station(350),stationp(14,731)
integer hg(350),hgp(16,731)
real dd(350,2),ddp(14,731,2),t(350,2),tp(14,731,2)
character(60) filename(731),filename1(14)
open(11,file='e:/zuoye/100.txt')
read(11,*)(filename(i),i=1,728)
write(*,*)(filename(i),i=1,18)
close(11)
do m=1,728
k=20+m
lines=0
open(k,file=filename(m))
do while(.not.eof(k))
read(k,*)
lines=lines+1
enddo
close(k)
open(k,file=filename(m))
a=lines-2
read(K,*)
read(k,*)
read(k,*)(station(i),(dd(i,j),j=1,2),hg(i),jb(i),gd(i),(t(i,j),j=1,2),(wind(i,j),j=1,2),i=1,a)
do n=1,a
if(station(n)==57957) then
stationp(1,m)=station(n)
ddp(1,m,1)=dd(n,1)
ddp(1,m,2)=dd(n,2)
hgp(1,m)=hg(n)
gdp(1,m)=gd(n)
tp(1,m,1)=t(n,1)
tp(1,m,2)=t(n,2)
windp(1,m,1)=wind(n,1)
windp(1,m,2)=wind(n,2)
elseif(station(n)==57972) then
stationp(2,m)=station(n)
ddp(2,m,1)=dd(n,1)
ddp(2,m,2)=dd(n,2)
hgp(2,m)=hg(n)
gdp(2,m)=gd(n)
tp(2,m,1)=t(n,1)
tp(2,m,2)=t(n,2)
windp(2,m,1)=wind(n,1)
windp(2,m,2)=wind(n,2)
elseif(station(n)==57993) then
stationp(3,m)=station(n)
ddp(3,m,1)=dd(n,1)
ddp(3,m,2)=dd(n,2)
hgp(3,m)=hg(n)
gdp(3,m)=gd(n)
tp(3,m,1)=t(n,1)
tp(3,m,2)=t(n,2)
windp(3,m,1)=wind(n,1)
windp(3,m,2)=wind(n,2)
elseif(station(n)==59023) then
stationp(4,m)=station(n)
ddp(4,m,1)=dd(n,1)
ddp(4,m,2)=dd(n,2)
hgp(4,m)=hg(n)
gdp(4,m)=gd(n)
tp(4,m,1)=t(n,1)
tp(4,m,2)=t(n,2)
windp(4,m,1)=wind(n,1)
windp(4,m,2)=wind(n,2)
elseif(station(n)==59211) then
stationp(5,m)=station(n)
ddp(5,m,1)=dd(n,1)
ddp(5,m,2)=dd(n,2)
hgp(5,m)=hg(n)
gdp(5,m)=gd(n)
tp(5,m,1)=t(n,1)
tp(5,m,2)=t(n,2)
windp(5,m,1)=wind(n,1)
windp(5,m,2)=wind(n,2)
elseif(station(n)==59265) then
stationp(6,m)=station(n)
ddp(6,m,1)=dd(n,1)
ddp(6,m,2)=dd(n,2)
hgp(6,m)=hg(n)
gdp(6,m)=gd(n)
tp(6,m,1)=t(n,1)
tp(6,m,2)=t(n,2)
windp(6,m,1)=wind(n,1)
windp(6,m,2)=wind(n,2)
elseif(station(n)==59293) then
stationp(7,m)=station(n)
ddp(7,m,1)=dd(n,1)
ddp(7,m,2)=dd(n,2)
hgp(7,m)=hg(n)
gdp(7,m)=gd(n)
tp(7,m,1)=t(n,1)
tp(7,m,2)=t(n,2)
windp(7,m,1)=wind(n,1)
windp(7,m,2)=wind(n,2)
elseif(station(n)==59316) then
stationp(8,m)=station(n)
ddp(8,m,1)=dd(n,1)
ddp(8,m,2)=dd(n,2)
hgp(8,m)=hg(n)
gdp(8,m)=gd(n)
tp(8,m,1)=t(n,1)
tp(8,m,2)=t(n,2)
windp(8,m,1)=wind(n,1)
windp(8,m,2)=wind(n,2)
elseif(station(n)==59431) then
stationp(1,m)=station(n)
ddp(9,m,1)=dd(n,1)
ddp(9,m,2)=dd(n,2)
hgp(9,m)=hg(n)
gdp(9,m)=gd(n)
tp(9,m,1)=t(n,1)
tp(9,m,2)=t(n,2)
windp(9,m,1)=wind(n,1)
windp(9,m,2)=wind(n,2)
elseif(station(n)==59644) then
stationp(10,m)=station(n)
ddp(10,m,1)=dd(n,1)
ddp(10,m,2)=dd(n,2)
hgp(10,m)=hg(n)
gdp(10,m)=gd(n)
tp(10,m,1)=t(n,1)
tp(10,m,2)=t(n,2)
windp(10,m,1)=wind(n,1)
windp(10,m,2)=wind(n,2)
elseif(station(n)==59663) then
stationp(11,m)=station(n)
ddp(11,m,1)=dd(n,1)
ddp(11,m,2)=dd(n,2)
hgp(11,m)=hg(n)
gdp(11,m)=gd(n)
tp(11,m,1)=t(n,1)
tp(11,m,2)=t(n,2)
windp(11,m,1)=wind(n,1)
windp(11,m,2)=wind(n,2)
elseif(station(n)==59758) then
stationp(1,m)=station(n)
ddp(12,m,1)=dd(n,1)
ddp(12,m,2)=dd(n,2)
hgp(12,m)=hg(n)
gdp(12,m)=gd(n)
tp(12,m,1)=t(n,1)
tp(12,m,2)=t(n,2)
windp(12,m,1)=wind(n,1)
windp(12,m,2)=wind(n,2)
elseif(station(n)==59948) then
stationp(13,m)=station(n)
ddp(13,m,1)=dd(n,1)
ddp(13,m,2)=dd(n,2)
hgp(13,m)=hg(n)
gdp(13,m)=gd(n)
tp(13,m,1)=t(n,1)
tp(13,m,2)=t(n,2)
windp(13,m,1)=wind(n,1)
windp(13,m,2)=wind(n,2)
elseif(station(n)==59981) then
stationp(14,m)=station(n)
ddp(14,m,1)=dd(n,1)
ddp(14,m,2)=dd(n,2)
hgp(14,m)=hg(n)
gdp(14,m)=gd(n)
tp(14,m,1)=t(n,1)
tp(14,m,2)=t(n,2)
windp(14,m,1)=wind(n,1)
windp(14,m,2)=wind(n,2)
end if
end do
close(k)
end do
open(12,file='e:/zuoye/pingjun/data.txt')
m=1
write(*,*) m
read(12,*)(filename1(i),i=1,14)
write(*,*) (filename1(i),i=1,14)
close(12)
do i=1,14
k=i+30
open(k,file=filename(i))
write(k,100) i,(stationp(i,m),(ddp(i,m,j),j=1,2),hgp(i,m),gdp(i,m),(tp(i,m,j),j=1,2),(windp(i,m,j),j=1,2),m=1,728)
close(K)
enddo
100 format(2x,i2,2x,i5,2x,f6.2,2x,f5.2,2x,i3,2x,2x,i6,2x,f6.1,2x,f6.1,2x,i4,2x,i4)
end
这是一个读取不同文件夹下不同文本文档中开头一样的一行数据的 如开头都为57957的一行,现在循环不了 不知道问题出哪儿了 请教各位。文件中plot下有11个文件夹,分别是100-1000hpa下的文档 每个文件夹中有728个文本,想要做的是 把各hpa下的文本中开头为
57957
57972
57993
59023
59211
59265
59293
59316
59431
59644
59663
59758
59948
59981
这些编号的行数挑出来存在一个文本中。
implicit none
integer i,j,k,m,n
integer jb(350),jbp(14,350),wind(350,2),windp(14,731,2),gd(350),gdp(14,731),lines,a
integer station(350),stationp(14,731)
integer hg(350),hgp(16,731)
real dd(350,2),ddp(14,731,2),t(350,2),tp(14,731,2)
character(60) filename(731),filename1(14)
open(11,file='e:/zuoye/100.txt')
read(11,*)(filename(i),i=1,728)
write(*,*)(filename(i),i=1,18)
close(11)
do m=1,728
k=20+m
lines=0
open(k,file=filename(m))
do while(.not.eof(k))
read(k,*)
lines=lines+1
enddo
close(k)
open(k,file=filename(m))
a=lines-2
read(K,*)
read(k,*)
read(k,*)(station(i),(dd(i,j),j=1,2),hg(i),jb(i),gd(i),(t(i,j),j=1,2),(wind(i,j),j=1,2),i=1,a)
do n=1,a
if(station(n)==57957) then
stationp(1,m)=station(n)
ddp(1,m,1)=dd(n,1)
ddp(1,m,2)=dd(n,2)
hgp(1,m)=hg(n)
gdp(1,m)=gd(n)
tp(1,m,1)=t(n,1)
tp(1,m,2)=t(n,2)
windp(1,m,1)=wind(n,1)
windp(1,m,2)=wind(n,2)
elseif(station(n)==57972) then
stationp(2,m)=station(n)
ddp(2,m,1)=dd(n,1)
ddp(2,m,2)=dd(n,2)
hgp(2,m)=hg(n)
gdp(2,m)=gd(n)
tp(2,m,1)=t(n,1)
tp(2,m,2)=t(n,2)
windp(2,m,1)=wind(n,1)
windp(2,m,2)=wind(n,2)
elseif(station(n)==57993) then
stationp(3,m)=station(n)
ddp(3,m,1)=dd(n,1)
ddp(3,m,2)=dd(n,2)
hgp(3,m)=hg(n)
gdp(3,m)=gd(n)
tp(3,m,1)=t(n,1)
tp(3,m,2)=t(n,2)
windp(3,m,1)=wind(n,1)
windp(3,m,2)=wind(n,2)
elseif(station(n)==59023) then
stationp(4,m)=station(n)
ddp(4,m,1)=dd(n,1)
ddp(4,m,2)=dd(n,2)
hgp(4,m)=hg(n)
gdp(4,m)=gd(n)
tp(4,m,1)=t(n,1)
tp(4,m,2)=t(n,2)
windp(4,m,1)=wind(n,1)
windp(4,m,2)=wind(n,2)
elseif(station(n)==59211) then
stationp(5,m)=station(n)
ddp(5,m,1)=dd(n,1)
ddp(5,m,2)=dd(n,2)
hgp(5,m)=hg(n)
gdp(5,m)=gd(n)
tp(5,m,1)=t(n,1)
tp(5,m,2)=t(n,2)
windp(5,m,1)=wind(n,1)
windp(5,m,2)=wind(n,2)
elseif(station(n)==59265) then
stationp(6,m)=station(n)
ddp(6,m,1)=dd(n,1)
ddp(6,m,2)=dd(n,2)
hgp(6,m)=hg(n)
gdp(6,m)=gd(n)
tp(6,m,1)=t(n,1)
tp(6,m,2)=t(n,2)
windp(6,m,1)=wind(n,1)
windp(6,m,2)=wind(n,2)
elseif(station(n)==59293) then
stationp(7,m)=station(n)
ddp(7,m,1)=dd(n,1)
ddp(7,m,2)=dd(n,2)
hgp(7,m)=hg(n)
gdp(7,m)=gd(n)
tp(7,m,1)=t(n,1)
tp(7,m,2)=t(n,2)
windp(7,m,1)=wind(n,1)
windp(7,m,2)=wind(n,2)
elseif(station(n)==59316) then
stationp(8,m)=station(n)
ddp(8,m,1)=dd(n,1)
ddp(8,m,2)=dd(n,2)
hgp(8,m)=hg(n)
gdp(8,m)=gd(n)
tp(8,m,1)=t(n,1)
tp(8,m,2)=t(n,2)
windp(8,m,1)=wind(n,1)
windp(8,m,2)=wind(n,2)
elseif(station(n)==59431) then
stationp(1,m)=station(n)
ddp(9,m,1)=dd(n,1)
ddp(9,m,2)=dd(n,2)
hgp(9,m)=hg(n)
gdp(9,m)=gd(n)
tp(9,m,1)=t(n,1)
tp(9,m,2)=t(n,2)
windp(9,m,1)=wind(n,1)
windp(9,m,2)=wind(n,2)
elseif(station(n)==59644) then
stationp(10,m)=station(n)
ddp(10,m,1)=dd(n,1)
ddp(10,m,2)=dd(n,2)
hgp(10,m)=hg(n)
gdp(10,m)=gd(n)
tp(10,m,1)=t(n,1)
tp(10,m,2)=t(n,2)
windp(10,m,1)=wind(n,1)
windp(10,m,2)=wind(n,2)
elseif(station(n)==59663) then
stationp(11,m)=station(n)
ddp(11,m,1)=dd(n,1)
ddp(11,m,2)=dd(n,2)
hgp(11,m)=hg(n)
gdp(11,m)=gd(n)
tp(11,m,1)=t(n,1)
tp(11,m,2)=t(n,2)
windp(11,m,1)=wind(n,1)
windp(11,m,2)=wind(n,2)
elseif(station(n)==59758) then
stationp(1,m)=station(n)
ddp(12,m,1)=dd(n,1)
ddp(12,m,2)=dd(n,2)
hgp(12,m)=hg(n)
gdp(12,m)=gd(n)
tp(12,m,1)=t(n,1)
tp(12,m,2)=t(n,2)
windp(12,m,1)=wind(n,1)
windp(12,m,2)=wind(n,2)
elseif(station(n)==59948) then
stationp(13,m)=station(n)
ddp(13,m,1)=dd(n,1)
ddp(13,m,2)=dd(n,2)
hgp(13,m)=hg(n)
gdp(13,m)=gd(n)
tp(13,m,1)=t(n,1)
tp(13,m,2)=t(n,2)
windp(13,m,1)=wind(n,1)
windp(13,m,2)=wind(n,2)
elseif(station(n)==59981) then
stationp(14,m)=station(n)
ddp(14,m,1)=dd(n,1)
ddp(14,m,2)=dd(n,2)
hgp(14,m)=hg(n)
gdp(14,m)=gd(n)
tp(14,m,1)=t(n,1)
tp(14,m,2)=t(n,2)
windp(14,m,1)=wind(n,1)
windp(14,m,2)=wind(n,2)
end if
end do
close(k)
end do
open(12,file='e:/zuoye/pingjun/data.txt')
m=1
write(*,*) m
read(12,*)(filename1(i),i=1,14)
write(*,*) (filename1(i),i=1,14)
close(12)
do i=1,14
k=i+30
open(k,file=filename(i))
write(k,100) i,(stationp(i,m),(ddp(i,m,j),j=1,2),hgp(i,m),gdp(i,m),(tp(i,m,j),j=1,2),(windp(i,m,j),j=1,2),m=1,728)
close(K)
enddo
100 format(2x,i2,2x,i5,2x,f6.2,2x,f5.2,2x,i3,2x,2x,i6,2x,f6.1,2x,f6.1,2x,i4,2x,i4)
end
这是一个读取不同文件夹下不同文本文档中开头一样的一行数据的 如开头都为57957的一行,现在循环不了 不知道问题出哪儿了 请教各位。文件中plot下有11个文件夹,分别是100-1000hpa下的文档 每个文件夹中有728个文本,想要做的是 把各hpa下的文本中开头为
57957
57972
57993
59023
59211
59265
59293
59316
59431
59644
59663
59758
59948
59981
这些编号的行数挑出来存在一个文本中。