Ошибка чтения Python SDF - PullRequest
0 голосов
/ 04 марта 2019

Я хочу запустить этот скрипт на python.Я установил SDF-ридер в Linux с помощью следующей команды в моем домашнем каталоге

python -m pip install --upgrade sdf

, и, похоже, он успешно установлен.Сценарий Python выглядит следующим образом:

import sdf
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
import numpy as np
import os
from numpy import ma
from matplotlib import colors, ticker, cm
from matplotlib.mlab import bivariate_normal
from matplotlib.colors import ListedColormap


if __name__ == "__main__":
  print ('This is main of module "test2d.py"')
  ######## Constant defined here ########
  pi        =     3.1415926535897932384626
  q0        =     1.602176565e-19 # C
  m0        =     9.10938291e-31  # kg
  v0        =     2.99792458e8    # m/s^2
  kb        =     1.3806488e-23   # J/K
  mu0       =     4.0e-7*pi       # N/A^2
  epsilon0  =     8.8541878176203899e-12 # F/m
  h_planck  =     6.62606957e-34  # J s
  wavelength=     1.0e-6
  frequency =     v0*2*pi/wavelength

  exunit    =     m0*v0*frequency/q0
  bxunit    =     m0*frequency/q0
  denunit    =     frequency**2*epsilon0*m0/q0**2
  print 'electric field unit: '+str(exunit)
  print 'magnetic field unit: '+str(bxunit)
  print 'density unit nc: '+str(denunit)

  font = {'family' : 'helvetica',  
          'color'  : 'black',  
          'weight' : 'normal',  
          'size'   : 20,  
          }  



  n=47
  data = sdf.read("./"+str(n).zfill(4)+".sdf",dict=True)
  header=data['Header']
  time=header['time']
  x  = data['Grid/Grid_mid'].data[0]/1.0e-6
  y  = data['Grid/Grid_mid'].data[1]/1.0e-6
  y  = y[600:1799]
  X, Y = np.meshgrid(x, y)

Это дает мне следующую ошибку:

Traceback (most recent call last):
  File "epochvis.py", line 45, in <module>
    data = sdf.read("./"+str(n).zfill(4)+".sdf",dict=True)
AttributeError: 'module' object has no attribute 'read'

Есть идеи?Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

sdf не имеет функции чтения.

попробуйте ввести следующее в вашей оболочке Python

import sdf
help(sdf)

вы увидите

FUNCTIONS
    load(filename, objectname='/', unit=None, scale_units=None)
        Load a dataset or group from an SDF file

    save(filename, group)
        Save an SDF group to a file

    validate(obj)
        Validate an sdf.Group or sdf.Dataset

...