Чтение прямого доступа к неформатированному файлу в Python

Я совершенно новичок в Python и пишу свои коды визуализации на Python с нуля (чтобы не использовать дорогие проприетарные программы, такие как IDL). До сих пор я использовал IDL и gnuplot. То, что я хочу быть в состоянии сделать это:

Я пишу двумерные массивы в неформатированные файлы прямого доступа, используя фортран, который я хочу читать на python. Точный код теста приведен ниже. Фактический код представляет собой огромный параллельный код, но вывод данных практически в том же формате.

<code>program binary_out
implicit none
integer :: i,j,t,rec_array
double precision, dimension(100,100) :: fn
double precision, parameter :: p=2*3.1415929
INQUIRE(IOLENGTH=rec_array) fn
open(unit=10,file='test',status='new',form='unformatted',access='direct',recl=rec_array)                                                                           
   fn=0
   write(10,rec=1) fn
do t=1,3
do i=1,100
   do j=1,100
      fn(i,j)=sin(i*p*t/100)*cos(j*p*t/100)
   enddo
enddo
   write(10,rec=t+1) fn
enddo
close(10)
end program binary_out
</code>

Программа должна давать мне нули при t = 1 и увеличивающемся количестве «островков» для увеличения значения т. Но когда я читаю его, используя приведенный ниже код на python, я просто получаю нули. Если я удаляю первый оператор записи нулей, я просто получаю первый временной интервал независимо от того, какое значение равно «временному срезу». Я использую в коде Python. Код, который у меня пока есть:

<code>#!/usr/bin/env python
import scipy
import glob
import numpy as np
import matplotlib.pyplot as plt
import os, sys
from pylab import *

def readslice(inputfilename,field,nx,ny,timeslice):
   f=open(inputfilename,'r')
   f.seek(timeslice*nx*ny)
   field=np.fromfile(inputfilename,dtype='d',count=nx*ny)
   field=np.reshape(field,(nx,ny))
   return field

a=np.dtype('d')
a=readslice('test',a,100,100,2)

im=plt.imshow(a)
plt.show()
</code>

Я хочу, чтобы def readslice мог читать запись на i-м месте, если временный интервал равен i. Для этого я попытался использовать f.seek, но, похоже, он не работает. numpy.fromfile, похоже, начинает читать с самой первой записи. Как мне сделать numpy.fromfile для чтения из определенной точки в файле?

Я все еще пытаюсь привыкнуть к стилю Python и копаться в документации. Любая помощь и указатели будут с благодарностью.

Ответы на вопрос(2)

Ваш ответ на вопрос