使用Fortran读取二进制文件 - 如果没有提供输入列表,Fortran会跳过多少字节?

时间:2016-04-27 19:56:42

标签: python fortran binaryfiles

我正在尝试了解一些Fortran代码。在某一点上有一行,它在不指定任何输入列表的情况下读取二进制文件,只是文件本身和用于到达文件末尾的语句标签:

open (unit=unitname,file='name.ext',form='unformatted',status='old',iostat=ios)
...
read (myFile,end=902)

我用一些Python代码读取文件并进行一些调试,我意识到Fortran代码使用这个read命令跳过了2484字节(是的,我算了!)。我不知道是否有特殊原因。如果我没有弄错的话,Fortran中的read命令只会在没有任何输入列表的情况下读取整行,但由于这是一个二进制文件,我想知道会发生什么。这个2484魔法数字来自哪里?如果在没有在Fortran中指定输入列表的情况下读取二进制文件会发生什么?

1 个答案:

答案 0 :(得分:2)

对于为顺序访问而连接的文件,没有输入项的read语句会使记录的位置前进。

对于格式化输入,正如您在问题中所述,此类读取将跳过一行:在此文件中,记录通常是一行。

同样的想法适用于未格式化的输入,来自您所谓的二进制文件。这里的记录意味着什么可能超出了这个答案的范围(并且围绕着这个问题有很多细微差别),但需要注意的是,仍然有一个明确定义的记录大小的概念。 / p>

为了完全证明该陈述,您的文件确实已连接到未格式化的传输(并且与read语句兼容):

open (unit=unitname,file='name.ext',form='unformatted',status='old',iostat=ios)

access=中没有相反的open说明符,模式是连续的。