爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5091|回复: 8

[求助] fortran批处理多个txt

[复制链接]

新浪微博达人勋

发表于 2016-11-28 11:31:05 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
现在在处理降水相关的文件夹一共是130多个txt,但是每一个txt行数都不一样,我想通过批处理把多个为txt合并成一个txt,方便后面计算,但是原来做过批处理是处理每一个txt是行数相同,批处理循环时的行数较为容易处理,但是现在是处理多个不同行数txt,怎样循环行数语句可以实现喃,我将行数一样的txt程序帖出来,求各位大神帮忙看看,怎么样能处理不同行数喃,红色字体感觉是需要改进的地方,比较着急,先感谢各位大神了。
program main
implicit none
integer,parameter::n=19723,state_num=133        
integer state(n),year(n),statename(state_num),mon(n),day(n)
real var(n),ave(state_num),juping(n),h(n),z(n),q(n)
integer i,j,k
character*30 filename(133)

open(7,file='F:\work\fengbao\2\filenames.txt')
do j=1,133
   read(7,*)filename(j)
enddo
do k=1,133
open(1,file='F:\work\fengbao\2\'//filename(k)) !批处理开始
do i=1,n
    read(1,*) state(n),year(n),mon(n),day(n),var(n),h(n),z(n),q(n)      
!print*,state(n),year(n),mon(n),day(n),var(n),h(n),z(n),q(n)
enddo
close(1)
open(2,file="F:\work\fengbao\2\out.txt")   

do i=1,n
     write(2,*) state(n),year(n),mon(n),day(n),h(n),z(n),q(n)
      
    enddo
   
                              
end do !外循环的批处理的结束
close(2)
end                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                                         

本帖被以下淘专辑推荐:

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-28 11:45:51 | 显示全部楼层
10  read(1,*,end=100) .........
........
goto  10
100 continue
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2016-11-28 11:53:02 | 显示全部楼层
open(1,file='F:\work\fengbao\2\'//trim(filename(k)))
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-28 12:27:54 | 显示全部楼层
感觉楼主说得好复杂的样子,是合并txt文档么

http://jingyan.baidu.com/article/fa4125acb3dd8228ad709265.html
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-28 13:31:10 | 显示全部楼层
本帖最后由 sun_shine_Xia 于 2016-11-28 13:32 编辑

open(1,file='F:\work\fengbao\2\'//filename(k)) !批处理开始
ccccccc 记录文件长度
      count=0
      do while(.true.)
      read(1,*,iostat=error) buffer
      if ( error/=0 ) exit ! 没有数据了,离开循环
      count=count+1        ! 计算行数
      end do  
!该段语句已经将文件读完,文件默认关闭,所有后边用到rewind重新打开文件
      t=count
rewind(1)  !回到文件头,从文件第一个记录开始
do i=1,t
    read(1,*) state(i),year(i),mon(i),day(i),var(i),h(i),z(i),q(i)      
    !print*,state(i),year(i),mon(i),day(i),var(i),h(i),z(i),q(i)
enddo
前面那个部分就是用来获取这个txt有多少行数据,然后将行数赋值给t,然后后面再按照t行来读取数据就行了

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-11-28 14:34:28 | 显示全部楼层
nuister 发表于 2016-11-28 12:27
感觉楼主说得好复杂的样子,是合并txt文档么

http://jingyan.baidu.com/article/fa4125acb3dd8228ad70926 ...

是的,是的,就是每一个txt行数不一样
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-28 15:58:33 | 显示全部楼层
自由行 发表于 2016-11-28 14:34
是的,是的,就是每一个txt行数不一样

那你直接全部合并了再读取不就行了,有的时候程序并不是最好用的。给你的那个链接里的方法很简单的,行数不一样也可以合并
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-22 14:05:23 | 显示全部楼层
学习了,非常感谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-22 16:42:38 | 显示全部楼层
又学习了一个新技能
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表