作者snowanimal (依然动物先生)
看板Programming
标题Re: [请教]如果要用fortran同时开10000个txt档......
时间Fri Feb 16 10:18:21 2007
※ 引述《[email protected] (知恩 感恩 报恩 :))》之铭言:
: ※ 引述《Bourbaki (知恩 感恩 报恩 :))》之铭言:
: > 有没有什麽方式可以用简单的指令一口气开10000个档啊
: > 因为每个一个档就要写一次open 感觉很麻烦
: > 而且我要开的txt档都正好的编号顺序的 从0000.txt到9999.txt
: > 如果要一个一个打的话 就得打一万次啊XD
: > open(10000, file = "0000.txt")
: > open(10001, file = "0001.txt")
: > open(10002, file = "0002.txt")
: > ......
: > ....
: > open(19998, file = "9998.txt")
: > open(19999, file = "9999.txt")
: > 打完後大概也快毙了吧
: >
: 很抱歉我的异想天开造成大家的困扰....
: 这是我在做流平模拟时遇到的麻烦
: 当中的每一个档都是某一个时间点储存的格点数据
: 而我需要每一个档案当中的某几行几列的数据来做计算
: 其实最初是打算开一档案 读出我要的数据 然後关闭档案
: 然後再开下一个档案 再读 再关 再开下下一个
: 如此如此 重复把所有档案中需要的数值读出来
: 只是想到要这样写n行实在是令人却步
: 所以才一想天开po版请教有没有什麽偷吃步可以省下重复的动作
: 虽然後来自己想到一个很无力的做法
: 可以很轻松地用open(xxxxx, file = "xxxx.txt")一次写下一万行
: 但是事实就如同大大们讲的一样
: 执行是可以执行啦
: 不过没办法同时开这麽多个档 囧!?
: 最後还是决定一步一脚诚实地做事啦
: 最後谢谢各位大大们的分享
: 也祝各位新年快乐
: 谢谢 :)
:
如果你的档案都是"已经存在"的
那只需要做个file list 再读进来即可
例如你的data file存放在
/bourbaki/simulation/data
直接在此目录下 ls > list
这样就会把ls显示的结果 放到list这个新的文字档内
[换言之就是 这个目录下的档案]
里面应该会是
0000.txt
0001.txt
...
...
9999.txt
这样你的program就只需要这样弄
program bourbaki
integer i
chatacter*8 name
open (11,file='list',form='formatted')
i=0
20 read (11,'(a8)',end=21) name !读入list里面的档名
i=i+1
write (*,*) i,name !显示编号与处理档名
open (30,file=name)
...... !这边写你需要处理的code
close (30) !打开之後关闭起来
goto 20
21 continue
stop
end
用这种方法几乎可以吃遍所有开档
尤其是那种没有次序 或是 没有轨迹可循的大量档名
把整个filelist先建立好之後
再来开档即可
我猜的出来大概是因为你不想依照每个档案都开一次来写
可是事实上开一个写一个比较安全 也比较快
因为你可以做了30个档案就先记录一次
这样即使机器挂点 也可以检查一下log处理到哪 再从坏掉的那边补起来继续做
我最多一个程式处理过 365*55*3xx 个档案
(365天 55年 300多个雨量测站)
几乎也都是用这种方法读入之後重新写出放置在
yyyy/mm/dd/stnno的位置上
--
●▲◆▼●▲◆▼●▲◆▼●▲◆▼●▲◆▼●▲◆▼● ▲▲▲▲
▼ 我与我的酷企鹅 - 台客 ▲ 〒 〒
◆ 相本:
http://photo.xuite.net/animalion ◆ ▲
▲ 网志:
http://blog.xuite.net/animalion ▼ ◣
▼ ◢
●▼◆▲●▼◆▲●▼◆▲●▼◆▲●▼◆▲●▼◆▲● M A R U.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 192.83.177.177