添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

用python读取tar.gz档案中的fortran二进制文件

0 人关注

我有一个Fortran代码,它在一个没有格式化的文件(二进制文件)中输出其数据。 我也有一个Python诊断代码,它读取该二进制数据,以便进行分析。

for ip in range(np.size(fileNames)):
    f = FortranFile(fileNames[ip], 'r')
    ints = f.read_record([('nx', 'i4'), ('nv', 'i4'), ('nl', 'i4'), ('nlb', 'i4')])
    record = f.read_record([('xx', 'f8', (nl)), ('vv', 'f8', (nv)), ('fav', 'f8', (nv)), ('f0', 'f8', (nv+2)), ('sing_f', 'f4', (nv+2,nl+2*nlb))])
    f.close()

不幸的是,我有很多数据文件,所以为了减少文件的数量,我决定将数据归档在一个tar.gz文件中。

目前,我只找到了一种从档案中读取数据的方法。为此,我从档案库中提取我需要的文件,然后用我以前的代码读取它,一旦完成,就删除它。

tar = tarfile.open(tarName, "r:gz")
tarfileNames = tar.getnames()
for ip in range(np.size(tarfileNames)):
    tar.extractall(members=[x for x in tar.getmembers() if x.name in tarfileNames[ip]])
    f = FortranFile(tarfileNames[ip], 'r')
    ints = f.read_record([('nx', 'i4'), ('nv', 'i4'), ('nl', 'i4'), ('nlb', 'i4')])
    record = f.read_record([('xx', 'f8', (nl)), ('vv', 'f8', (nv)), ('fav', 'f8', (nv)), ('f0', 'f8', (nv+2)), ('sing_f', 'f4', (nv+2,nl+2*nlb))])
    f.close()