当前位置: 首页 > 面试题库 >

使用python读取fortran未格式化的文件

葛浩阔
2023-03-14
问题内容

我有一个fortran程序会生成未格式化的文件,并且正在尝试将它们读入Python。

我有源代码,因此我知道第一个“块”是的字符数组,character*1 name(80)依此类推。所以我开始

f = open(filename,'rb')
bytes = 80
name = struct.unpack('c'*bytes,f.read(bytes))

并且name是一个80长度的元组,由长度为1的字符串组成;其中一些内容是十六进制字符串(例如\x00)。如何将这个变量转换为单个ascii字符串?


问题答案:

大多数Fortran未格式化文件将包含额外的字节来指定记录的长度。记录是用单个Fortran写语句写的一组项目。每个记录的开始和结束通常为4个字节。因此,使用另一种语言,您将要读取这些“隐藏”值并跳过它们。在这种情况下,如果您尝试将它们解释为字符串的一部分,则会在字符串中添加错误的值,该值可能具有ASCII的特殊值。

Fortran字符串将是固定长度,并在末尾用空格填充,ASCII中的空格为0x20。除非未初始化字符串或Fortran程序员使用字符串保存二进制数据,否则我不会期望值0x00。

在这个时代,如果Fortran程序员正在编写要与另一种语言一起使用的未格式化/二进制文件,则可以通过使用Fortran 2003的“流”
IO方法来忽略这些多余的字节。



 类似资料:
  • 问题内容: 我是Python的新手,正在从头开始用Python编写可视化代码(以避免使用昂贵的专有程序,如IDL)。到目前为止,我一直使用IDL和gnuplot。我想要做的是这样的: 我使用fortran将二维数组写入未格式化的直接访问文件,我希望能够在python中读取该数组。确切的测试代码如下。实际的代码是巨大的并行代码,但是数据输出几乎完全相同。 该程序应该给我t = 1的零和增加t值的“孤

  • 本文向大家介绍Python使用xlrd读取Excel格式文件的方法,包括了Python使用xlrd读取Excel格式文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python使用xlrd读取Excel格式文件的方法。分享给大家供大家参考。具体如下: 使用xlrd能够很方便的读取excel文件内容,而且这是个跨平台的库,能够在windows,linux/unix,等平台上面使用,

  • fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。 这两个函数的原型为: fp 为文件 指针,format 为格式控制字符串,... 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参

  • 本文向大家介绍Python如何读取文件中图片格式,包括了Python如何读取文件中图片格式的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python如何读取文件中图片格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 正常情况下,图片命名的后缀和图片的格式一致,但可能某些情况下,图片的原格式和命名的后缀不一样,查看图片的实际格式 以

  • 我是阿帕奇光束的新手。我有一个要求读一个文本文件的格式如下所示 在这里,直到一个空行的所有行都是一条记录的一部分,需要一起处理(例如,作为列插入到表中)。上面的示例对应于一个只有2条记录的文件。我正在使用ReadFromText读取文件并对其进行处理。它将每一行作为一个元素读取。然后我尝试循环和处理,直到得到空行。

  • 我收到的csv文件格式不正确(无法控制生成此csv的应用程序) CSV的标题和第一行如下所示: 这是我用来读取csv的代码: 这是我收到的输出: 第一个问题是奇怪的字符(可能缺少编码选项?)另外,标题是错误的,不能在该格式上使用DictReader,这对于编辑CSV非常有用。 我可以重写一个新的CSV与标题正确格式化,这不是一个问题,但我不知道如何跳过CSV的前3行!?或者我可以用CSV即将到来的