Нет модуля с именем ncdump

Итак, впервые я работаю с форматом NetCDF, и мне нужно использовать команду ncdump. Я только что загрузил Anaconda на свой новый ноутбук и использовал conda install netcdf4 для работы с форматом NetCDF. Почему я не могу использовать ncdump? Мне тоже нужно его установить или я еще что-то делаю не так? Что я делаю:

import ncdump from ncdump 

Что дает ошибку:

No module named ncdump

ncdump - это инструмент командной строки от NetCDF, вы не можете использовать его таким образом в Python, и чтобы использовать его в командной строке, вам необходимо установить NetCDF (а не пакет Python NetCDF4), например, с вашим обычным диспетчером пакетов. Какую ОС вы используете (Windows, Linux, ..)?
Bart 02.05.2018 06:34

Спасибо за ваш ответ! В этом мне помогло дальше stackoverflow.com/questions/1449494/…

Ralph 02.05.2018 09:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
1 441
1

Ответы 1

Друг мне помог с этой проблемой .... Скопируйте следующий код в файл с именем ncdump.py и поместите файл в каталог, в котором вы запускаете свой скрипт python.

from netCDF4 import Dataset
import glob

def ncdump(nc_fid, verb=True):
    '''
    ncdump outputs dimensions, variables and their attribute information.
    The information is similar to that of NCAR's ncdump utility.
    ncdump requires a valid instance of Dataset.

    Parameters
    ----------
    nc_fid : netCDF4.Dataset
        A netCDF4 dateset object
    verb : Boolean
        whether or not nc_attrs, nc_dims, and nc_vars are printed

    Returns
    -------
    nc_attrs : list
        A Python list of the NetCDF file global attributes
    nc_dims : list
        A Python list of the NetCDF file dimensions
    nc_vars : list
        A Python list of the NetCDF file variables
    '''
    def print_ncattr(key):
        """
        Prints the NetCDF file attributes for a given key

        Parameters
        ----------
        key : unicode
            a valid netCDF4.Dataset.variables key
        """
        try:
            print("\t\ttype:", repr(nc_fid.variables[key].dtype))
            for ncattr in nc_fid.variables[key].ncattrs():
                print('\t\t%s:' % ncattr,\
                      repr(nc_fid.variables[key].getncattr(ncattr)))
        except KeyError:
            print("\t\tWARNING: %s does not contain variable attributes" % key)

    # NetCDF global attributes
    nc_attrs = nc_fid.ncattrs()
    if verb:
        print ("NetCDF Global Attributes:")
        for nc_attr in nc_attrs:
            print('\t%s:' % nc_attr, repr(nc_fid.getncattr(nc_attr)))
    nc_dims = [dim for dim in nc_fid.dimensions]  # list of nc dimensions
    # Dimension shape information.
    if verb:
        print("NetCDF dimension information:")
        for dim in nc_dims:
            print("\tName:", dim)
            print("\t\tsize:", len(nc_fid.dimensions[dim]))
            print_ncattr(dim)
    # Variable information.
    nc_vars = [var for var in nc_fid.variables]  # list of nc variables
    if verb:
        print("NetCDF variable information:")
        for var in nc_vars:
            if var not in nc_dims:
                print('\tName:', var)
                print("\t\tdimensions:", nc_fid.variables[var].dimensions)
                print("\t\tsize:", nc_fid.variables[var].size)
                print_ncattr(var)
    return nc_attrs, nc_dims, nc_vars

import sys
import os
import fileinput


ncfiles = list(glob.glob('W:/kimberley/Vectors' + '/*.nc'))
for ifile in range(len(ncfiles)):
            sfile = Dataset(ncfiles[ifile],mode='r', format='NETCDF4')
            base, extension = os.path.splitext(ncfiles[ifile])
            output =  base + '_readme.txt'
            f = open(output, 'w')
            sys.stdout = f
            ncdump(sfile)
            f.close()
orig_stdout = sys.stdout

Теперь в вашем коде вы можете написать: импортировать ncdump из ncdump

Это будет работать!

Другие вопросы по теме