回 帖 发 新 帖 刷新版面

主题:fortran 想循环读取不规则文件名,如何办到?

M09C0500.184695
M09C0500.195392
M09C0500.210091
M09C0500.220788
M09C0500.231484
M09C0500.242183
M09C0500.252880





小弟现在要读取文件名类似这样命名方式的二进制文件,不知道如何做文件名的循环,因为文件名实在无规律可行

请大家能帮忙想想办法,谢谢了

回复列表 (共12个回复)

沙发

放到字符数组里面,数组循环可以不?
不会这个你没想到把??

板凳

1楼的方法可以实现:读取文件名至定义的数组中去 ,然后用该数组实现循环。

3 楼


新手,不知道如何实现,请明示

4 楼

站内搜索了一下, 参考一下这个帖子, 命令有问题的话再站内找一下.
(似乎新版找不到站内搜索, 先切换到旧版然后到版面最下面.)
http://bbs.pfan.cn/post-316174.html

5 楼

[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 楼

[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 楼

http://bbs.pfan.cn/post-316174.html
里面提供了用系统命令自动生成一个包含文件名的文件, 然后再结合读取方式实现.

8 楼

如果你仔细观察
文件名都是
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 楼

或者
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 楼


"可以先把文件名存放在一个自己新建的文件中,然后读取值数组中,方便以后更改和添加"

这一步是手工的吗?还是可以用额外的程序实现?

我来回复

您尚未登录,请登录后再回复。点此登录或注册