爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4745|回复: 11

[求助] 批量生成多个以站号为名的TXT文件,并把提取的数据按照站号分类存放

[复制链接]

新浪微博达人勋

发表于 2017-11-8 01:54:17 | 显示全部楼层 |阅读模式

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

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

x
想把它们按照站号分类,每个站号生成一个新TXT文件,并把该站号的所有数据放进去。罗列了4个站,就想一次性运行程序,出来4个以站号为名的TXT文件。
需要处理的数据如下所示:  
50136 5258 12231   4385 2014 12  1      0      0      0 0 0 0
50136 5258 12231   4385 2014 12  2      0     12     12 0 0 0
50136 5258 12231   4385 2014 12  3      6      3      9 0 0 0
50136 5258 12231   4385 2014 12  4      0      0      0 0 0 0
50136 5258 12231   4385 2014 12  5      0      0      0 0 0 0
50136 5258 12231   4385 2014 12  6      0      0      0 0 0 0
50136 5258 12231   4385 2014 12  7      0      0      0 0 0 0
50136 5258 12231   4385 2014 12  8      0      0      0 0 0 0
50136 5258 12231   4385 2014 12  9      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 10      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 11      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 12      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 13      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 14      0      1      1 0 0 0
50136 5258 12231   4385 2014 12 15      2      0      2 0 0 0
50136 5258 12231   4385 2014 12 16      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 17      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 18      0      3      3 0 0 0
50136 5258 12231   4385 2014 12 19      1  32700      1 0 0 0
50136 5258 12231   4385 2014 12 20      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 21      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 22      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 23      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 24      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 25      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 26      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 27      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 28      0      2      2 0 0 0
50136 5258 12231   4385 2014 12 29      0      0      0 0 0 0
50136 5258 12231   4385 2014 12 30  32700      1      1 0 0 0
50136 5258 12231   4385 2014 12 31      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  1      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  2      0      5      5 0 0 0
50137 5328 12222   2960 2014 12  3      3      1      4 0 0 0
50137 5328 12222   2960 2014 12  4      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  5      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  6      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  7      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  8      0      0      0 0 0 0
50137 5328 12222   2960 2014 12  9      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 10      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 11      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 12      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 13      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 14      0      2      2 0 0 0
50137 5328 12222   2960 2014 12 15      1      1      2 0 0 0
50137 5328 12222   2960 2014 12 16      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 17      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 18  32700      5      5 0 0 0
50137 5328 12222   2960 2014 12 19      1      0      1 0 0 0
50137 5328 12222   2960 2014 12 20      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 21      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 22      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 23      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 24      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 25      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 26      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 27      0      0      0 0 0 0
50137 5328 12222   2960 2014 12 28  32700      0  32700 0 0 0
50137 5328 12222   2960 2014 12 29      0      1      1 0 0 0
50137 5328 12222   2960 2014 12 30      1      1      2 0 0 0
50137 5328 12222   2960 2014 12 31      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  1      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  2      0      8      8 0 0 0
50246 5221 12443   3619 2014 12  3     16      4     20 0 0 0
50246 5221 12443   3619 2014 12  4      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  5      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  6      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  7      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  8      0      0      0 0 0 0
50246 5221 12443   3619 2014 12  9      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 10      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 11      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 12      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 13      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 14      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 15  32700      1      1 0 0 0
50246 5221 12443   3619 2014 12 16      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 17      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 18      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 19      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 20      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 21      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 22      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 23      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 24      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 25      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 26      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 27      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 28      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 29      0  32700  32700 0 0 0
50246 5221 12443   3619 2014 12 30      0      0      0 0 0 0
50246 5221 12443   3619 2014 12 31      0      0      0 0 0 0
50247 5202 12334 105145 2014 12  1      0      0      0 0 0 0
50247 5202 12334 105145 2014 12  2      0      9      9 0 0 0
50247 5202 12334 105145 2014 12  3      2      2      4 0 0 0
50247 5202 12334 105145 2014 12  4      0      0      0 0 0 0
50247 5202 12334 105145 2014 12  5      4      2      6 0 0 0
50247 5202 12334 105145 2014 12  6      0      0      0 0 0 0
50247 5202 12334 105145 2014 12  7      0      0      0 0 0 0
50247 5202 12334 105145 2014 12  8      0      0      0 0 0 0
50247 5202 12334 105145 2014 12  9      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 10      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 11      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 12      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 13      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 14      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 15  32700      0  32700 0 0 0
50247 5202 12334 105145 2014 12 16      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 17      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 18      0      1      1 0 0 0
50247 5202 12334 105145 2014 12 19      2      0      2 0 0 0
50247 5202 12334 105145 2014 12 20      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 21      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 22      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 23      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 24      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 25      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 26      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 27      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 28      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 29      0      0      0 0 0 0
50247 5202 12334 105145 2014 12 30      0  32700  32700 0 0 0
50247 5202 12334 105145 2014 12 31      0      0      0 0 0 0


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

新浪微博达人勋

 楼主| 发表于 2017-11-8 02:01:45 | 显示全部楼层
program sample
        implicit none

        character*5::zhandian(4)
        character*62 :: line
        integer :: i

        open(11,file='H:\station2015\zhandianhao.txt')
        do i=1,4
                read(11,*)zhandian(i)
        enddo
        close(11)

        open(12,file='H:\station2015\50136.txt')
          open(100,file='H:\zhandiandata\qiwen\shuju.txt',status='old')  
                                                                                 
          9000    read(i+100,'(0x,A62)', end=8000 ) line
  
                                if( line(1:5) == zhandian(1)) then
                                        write(12,*) trim(line)
        !print*, trim(line)
                                endif
         goto 9000
          8000 continue

         close(100)
         enddo
         close(12)
         end program sample

附带这个程序,能够实现单独生成一个站点的数据,并且存在该站号名的新TXT文件下,可我想求助大佬们,帮我改改程序,实现批量生成4个站名的TXT文件,并把各自的数据存进去
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-8 10:14:43 | 显示全部楼层
1、建议读入数据的时候就按列拆分好;
2、zhandian(j)写成动态的形式,进行比较,如果写成静态,将你的判断if扩充成if then...else if...else if...else...end if这样逐个判断也行呀;
3、输出文件命名也写成动态的形式open(12,file=dir//zhandian(j)//.txt),write(12,*)...类似这样
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-11-8 20:26:47 | 显示全部楼层
由于我不单独提数据每一行的某列数,我觉得可以直接用trim提每一行,不必再去分开设数组。
还是想问问,站点怎么写成动态的形式啊,???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-11-8 20:28:01 | 显示全部楼层
小肥妞 发表于 2017-11-8 10:14
1、建议读入数据的时候就按列拆分好;
2、zhandian(j)写成动态的形式,进行比较,如果写成静态,将你的判 ...

由于我不单独提数据每一行的某列数,我觉得可以直接用trim提每一行,不必再去分开设数组。
还是想问问,站点怎么写成动态的形式啊,???
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-9 11:55:05 | 显示全部楼层
1、首先可以不设置数组,即读一行,写一行;
2、你将一个if改为,if () then...else if () then... else if () then ... else  endif 三个括号分别写三个站点,并且每个 if then...语句中 就写入含有站号的文本,即每个if then中都write,三个不同的write(unit,*)在if前就open,即open(1,file=dir//trim(zhandian(1))//".txt");open(2,file=dir//trim(zhandian(2))//".txt");open(3,file=dir//trim(zhandian(3))//".txt")
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-11-9 16:40:07 | 显示全部楼层
小肥妞 发表于 2017-11-9 11:55
1、首先可以不设置数组,即读一行,写一行;
2、你将一个if改为,if () then...else if () then... else i ...

嗯,非常感谢,其实我要处理的站号非常多,这个方法还是可行,手动改的量大一点,我用matlab处理出来了,谢谢你
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-11 12:11:21 | 显示全部楼层
Persistence.9 发表于 2017-11-9 16:40
嗯,非常感谢,其实我要处理的站号非常多,这个方法还是可行,手动改的量大一点,我用matlab处理出来了, ...

论坛里有一个牛人写的 三种方法批量读取生成,建议你看下,个人比较推崇第三种方法:即调用cmd命令批量获取文件夹下所有文件名字,取文件名中你需要的站号等,然后字符串拼接为你需要的outfile文件名
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-11-11 20:23:31 | 显示全部楼层
小肥妞 发表于 2017-11-11 12:11
论坛里有一个牛人写的 三种方法批量读取生成,建议你看下,个人比较推崇第三种方法:即调用cmd命令批量获 ...

有没有链接呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-12 12:30:18 | 显示全部楼层
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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