我一直在尝试读取一个显然是使用 Fortran 代码创建的二进制文件。它采用 .j03 格式,据称是某种“旧 Fortran 格式”。但是,我无法将这个东西读入 Python 或 MATLAB。有问题的文件在这里。从文件的来源:
*文件以标准的 BINARY FORTRAN UNFORMATTED 格式编写,每个 4 字节字的字节顺序为 LITTLE ENDIAN。
如果您尝试在 MATLAB 或 C 中读取这些文件,请考虑 IFORT 在每条记录的末尾和开头添加 4 个字节。*
我已经在 Python 中尝试了多种方法 - 通过每 4 个字节步进或尝试使用解码(这告诉我它显然是 ASCII)来读取或np.fromfile读取open。不知道如何从这里开始。如果有人可以解码该文件或帮助我这样做,我将不胜感激......访问文件内容对我来说比打开它的技术更重要。因此,我可以立即使用的任何信息都会有所帮助。
np.fromfile
open
编辑:前几行应该是这样的。
variables= "x","z","uu","vv","ww","uv","oxox","oyoy", "ozoz" zone i= 128 , j= 85 ,f=point 7012.0693359375 2337.3564453125 0.0006860329 0.0000001922 0.0001566301 -0.0000022967 0.0212685466 0.0001820315 0.1483741105 3506.0346679688 2337.3564453125 0.0013318420 0.0000009303 0.0003984132 -0.0000067950 0.0487244353 0.0004225464 0.2540639639 2337.3564453125 2337.3564453125 0.0016939737 0.0000021201 0.0004831004 -0.0000040161 0.0822693184 0.0006190896 0.3612477779 1753.0173339844 2337.3564453125 0.0016179247 0.0000034364 0.0006777456 0.0000034771 0.1159339100 0.0008106859 0.4871017039 1402.4138183594 2337.3564453125 0.0017362968 0.0000055227 0.0006670614 0.0000114476 0.1455238760 0.0010049801 0.5012307167 1168.6782226562 2337.3564453125 0.0016870550 0.0000076339 0.0006272307 0.0000261369 0.1872732490 0.0011485637 0.6453682184
处理旧的Fortran格式文件可能有一定的挑战,因为它们使用特定的字节顺序和记录结构。在这种情况下,您提到文件是使用LITTLE ENDIAN字节顺序编写的,每个记录的开头和结尾都有4个字节。
以下是一种可能的方法来读取这样的文件:
import numpy as np filename = 'your_file.j03' # Read the binary file as a byte array with open(filename, 'rb') as f: byte_data = f.read() # Remove the 4-byte header and footer from each record record_size = 4 * len(variables) record_data = byte_data[4:-4] # Convert the byte array to a numpy array data = np.frombuffer(record_data, dtype=np.float32) # Reshape the numpy array into the correct dimensions num_records = len(data) // record_size data = data.reshape((num_records, len(variables))) print(data)
请注意,这只是一个基本示例,假设每个记录都包含相同数量的变量,并且每个变量都是4字节的浮点数。如果您的情况有所不同,您可能需要进行适当的修改。
另外,请确保variables列表正确包含了文件中变量的顺序。您可以将其替换为文件中实际使用的变量列表。
variables
请尝试这个代码,并根据您的需要进行适当的调整。希望这可以帮助您读取旧的Fortran格式文件。