主题:fortran 想循环读取不规则文件名,如何办到?
ppwolfe
[专家分:0] 发布于 2010-05-09 22:27:00
M09C0500.184695
M09C0500.195392
M09C0500.210091
M09C0500.220788
M09C0500.231484
M09C0500.242183
M09C0500.252880
。
。
。
小弟现在要读取文件名类似这样命名方式的二进制文件,不知道如何做文件名的循环,因为文件名实在无规律可行
请大家能帮忙想想办法,谢谢了
回复列表 (共12个回复)
沙发
他寻欢欢 [专家分:90] 发布于 2010-05-10 00:42:00
放到字符数组里面,数组循环可以不?
不会这个你没想到把??
板凳
elderQ [专家分:70] 发布于 2010-05-10 10:04:00
1楼的方法可以实现:读取文件名至定义的数组中去 ,然后用该数组实现循环。
3 楼
ppwolfe [专家分:0] 发布于 2010-05-10 17:57:00
新手,不知道如何实现,请明示
4 楼
yeg001 [专家分:14390] 发布于 2010-05-10 19:08:00
站内搜索了一下, 参考一下这个帖子, 命令有问题的话再站内找一下.
(似乎新版找不到站内搜索, 先切换到旧版然后到版面最下面.)
http://bbs.pfan.cn/post-316174.html
5 楼
他寻欢欢 [专家分:90] 发布于 2010-05-11 01:33:00
[quote]
新手,不知道如何实现,请明示[/quote]
CHARACTER(20) CH(100)
CH(1)=
CH(2)=
.
.
.
以上为赋值。填入文名
DO I=1,100
OPEN(1,FILE=CH(I)) !1也可以改成I
中间过程
CLOSE(1) !1也可以改成I
ENDDO
6 楼
elderQ [专家分:70] 发布于 2010-05-11 09:47:00
[quote][quote]
新手,不知道如何实现,请明示[/quote]
CHARACTER(20) CH(100)
CH(1)=
CH(2)=
.
.
.
以上为赋值。填入文名
DO I=1,100
OPEN(1,FILE=CH(I)) !1也可以改成I
中间过程
CLOSE(1) !1也可以改成I
ENDDO[/quote]
这样如果文件名很多,很不方便,可以先把文件名存放在一个自己新建的文件中,然后读取值数组中,方便以后更改和添加:
PROGRAM READFILE
CHARACTER(20) CH(100)
OPEN(2010,FILE='NAME.TXT,'STATUS='OLD',FORM='FORMATTED')
!NAME.TXT是自己新建的存有这些文件名的文件
DO 1 I=1,N !N是文件名个数
READ(2010,*),CH(I)
1 CONTINUE
DO 2 I=1,100
OPEN(1,FILE=CH(I)) !1也可以改成I
中间过程
CLOSE(1) !1也可以改成I
2 CONTINUE
END PROGRAM
7 楼
yeg001 [专家分:14390] 发布于 2010-05-11 11:59:00
http://bbs.pfan.cn/post-316174.html
里面提供了用系统命令自动生成一个包含文件名的文件, 然后再结合读取方式实现.
8 楼
shenjinggege [专家分:3260] 发布于 2010-05-12 01:05:00
如果你仔细观察
文件名都是
M09C0500.******
character*15 :: filename
do i=100000,999999
write(filename,'(A9,I6)') 'M09C0500.',i
open(100,file=filename,status='old',action='read',err=999)
read(100,....
close(100)
999 end do
9 楼
shenjinggege [专家分:3260] 发布于 2010-05-12 01:12:00
或者
character*15 :: filename
logical :: exists
do i=100000,999999
write(filename,'(A9,I6)') 'M09C0500.',i
inquire(file= filename, exist= exists)
if(exists) then
open(100,file=filename,status='old',action='read')
read(100,....
close(100)
end if
end do
10 楼
ppwolfe [专家分:0] 发布于 2010-05-12 13:06:00
"可以先把文件名存放在一个自己新建的文件中,然后读取值数组中,方便以后更改和添加"
这一步是手工的吗?还是可以用额外的程序实现?
我来回复