我需要使用Python读取CDF文件。我找到了一些库,但不知道如何使用。例如,在这个(Python lib)中,我需要下载CDF库,但不知道在哪里下载。虽然有一个CDF下载页面,但它似乎与此库无关。
我需要使用Python读取CDF文件。我找到了一些库,但不知道如何使用。例如,在这个(Python lib)中,我需要下载CDF库,但不知道在哪里下载。虽然有一个CDF下载页面,但它似乎与此库无关。
如果在发现这个问题之前您甚至不知道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指出)。您可以使用conda或pip和apt安装它们全部。
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接口,而且我的操作系统支持共享库。我想安装基于Curses的工具包程序,以便使用基于命令行的交互式CDF工具(这就是我们在第二步中安装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
子目录中。./bin
中应该有一个名为definitions.B
的文件会自动帮你完成这个过程,使用chmod+x
命令使其可执行,并将以下行添加到您的~/.bashrc
文件里(注意: 1)我假设您已将库安装在路径$HOME/Libraries/
下;2) .
后面有一个空格):. $HOME/Libraries/cdf/cdf36_3-dist/bin/definitions.B
重要说明:
上述文件在第68行存在一个错误,它不是将内容追加到环境变量LD_LIBRARY_PATH
中,而是覆盖了它。修复方法很简单,将第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)
cdf36_3-dist/samples/cacsst2.cdf
中。 - nealmcb$ pip install git+https://github.com/spacepy/spacepy.git
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
pip install <package name>
。scipy.io
模块访问它。Maven 的 CDFLib 是一个纯 Python 的替代品。
https://github.com/MAVENSDC/cdflibpip install cdflib
在你的代码中:
import cdflib
cdf_file = cdflib.CDF('/path/to/cdf_file.cdf')