如何在Python中读取通用数据格式(CDF)?[英] How read Common Data Format (CDF) in Python

本文是小编为大家收集整理的关于如何在Python中读取通用数据格式(CDF)?的处理方法,想解了如何在Python中读取通用数据格式(CDF)?的问题怎么解决?如何在Python中读取通用数据格式(CDF)?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我需要使用 python 读取 CDF 文件.我找到了库,但我不明白如何使用它.例如在这个(Python lib),我需要下载 CDF lib,我不不知道在哪里下载.CDF 有下载页面,但似乎与该库无关.

推荐答案

@miraculixx 的 answer 是正确的,但是它假定您已经安装了 CDF C 库.

如果您在 SO 上找到此问题之前甚至不知道 CDF 文件格式是什么,这里有一个易于遵循的指南.

1.下载最新版本的 CDF C 库:

您可以在此 链接.使用 wget 获取源代码,然后提取它.注意:下面会在当前文件夹./中创建一个目录,如果你想在不同的路径下载代码,请确保你更改下面的代码.

wget -r -l1 -np -nd -nc http://cdaweb.gsfc.nasa.gov/pub/software/cdf/dist/latest-release/linux/ -A cdf*-dist-all.tar.gz
tar xf cdf*-dist-all.tar.gz -C ./
cd cdf*dist

<强>2.安装所有依赖项:

SpacePy 和 CDF 库有几个依赖项(正如 @Michal Dyzma 所指出的).您可以使用 condapipapt.

pip install numpy scipy h5py matplotlib networkx
apt install build-essential gfortran libncurses5-dev

3.编译 C 库:

您应该已经下载了一个 README.install 文件,其中包含的有关此步骤的详细信息比我提供的要多得多.两分钱是您要检查哪些编译变量对于您的系统和需求是必需/可选的.

make all.help

我将使用 GNU C 编译器为 Linux 构建发行版.我对 FORTRAN 界面不感兴趣,我的操作系统支持可共享库.我想安装允许使用基于命令行的交互式 CDF 工具的基于 Curses 的工具包程序(这就是我们在步骤 2 中安装 libncurses5-dev 依赖项的原因).因此,这是最终的 make 命令:

make OS=linux ENV=gnu CURSES=yes FORTRAN=no UCOPTIONS=-O2 SHARED=yes -j4 all
make install #no sudo

安装应该运行顺利并添加 ./bin、./include 和 ./lib 子目录中的所有文件.

4.设置环境变量:

./bin 中应该有一个名为 definitions.B 的文件,它会自动为您执行此操作,使用 chmod+x 使其可执行并将以下行添加到您的 ~/.bashrc (注意:1)我假设您将库安装在路径 $HOME/Libraries/;2) .)后面有一个空格:

. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B

重要提示:上面的文件在 第 68 行 处有一个错误,而不是附加到环境变量 LD_LIBRARY_PATH 它会覆盖它.修复很简单,将 line 68 替换为以下内容:

export LD_LIBRARY_PATH=$HOME/Libraries/cdf/cdf36_3-dist/lib:$LD_LIBRARY_PATH

如果由于某种原因 definitions.B 不存在,只需添加以下内容:

export CDF_BASE=$HOME/Libraries/cdf/cdf36_3-dist
export CDF_INC=$CDF_BASE/include
export CDF_LIB=$CDF_BASE/lib
export CDF_BIN=$CDF_BASE/bin
export LD_LIBRARY_PATH=$CDF_BASE/lib:$LD_LIBRARY_PATH

5.你都准备好了,去做好事吧:

假设您使用 pip 安装了 spacepy,则以下内容应该可以立即使用:

from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)

本文地址:https://www.itbaoku.cn/post/1794082.html