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

标签 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 中读取二进制文件而不指定输入列表时会发生什么?

最佳答案

对于为顺序访问而连接的文件,不带输入项的 read 语句会将文件的位置前进一条记录。

对于格式化输入,正如您在问题中注意到的那样,这样的读取会跳过一行:在文件中,一条记录通常是一行。

同样的想法也适用于未格式化的输入,即您所说的二进制文件。这里的记录的含义可能有点超出了这个答案的范围(并且这方面有很多细微差别),但需要注意的关键一点是,记录大小仍然有一个明确定义的概念。

为了完全证明该语句的合理性,您的文件确实已连接以进行未格式化的传输(并且与该 read 语句兼容):

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

如果没有 access= 说明符,则相反,open 模式是顺序的。

关于python - 使用 Fortran 读取二进制文件 - 如果没有提供输入列表,Fortran 会跳过多少字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36899696/

相关文章:

python - 尝试打开 Pandas 时出现历史保存线程错误

python - 运行 Python 教程并停留在函数上

c - ISO_C_绑定(bind) : Impact on performance/optimization

fortran - 调用 Fortran 子例程的最佳高级语言是什么?

struct - 高语 : Variable length array in struct for use with binary read

c 二进制文件读取问题

python - 用 np.NaN 替换不同长度的句点?

python - Kivy - 在 ModalView 中按下按钮后更改屏幕

algorithm - 搜索质数

python - 通过二进制文件生成很多curl命令