我需要使用python讀取CDF文件。我找到了庫,但我不明白如何使用它。例如在這個(pythong lib),我需要下載CDF庫,我不知道在哪裏下載。有CDF的下載頁面,但它似乎與這個庫不相關。如何讀取Python中的公用數據格式(CDF)
回答
@miraculixx的answer是正確的,但它假定您已經安裝了CDF C Library。
這是一個易於使用的指南,如果您在SO上發現此問題之前甚至不知道CDF文件格式是什麼。
1.下載CDF C庫的最新版本:
你會發現在這個link最新的穩定版本。使用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界面不感興趣,我的操作系統支持共享庫。我想安裝允許使用基於命令行的交互式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
重要提示: 上面的文件有它覆蓋它而不是追加到環境變量LD_LIBRARY_PATH
在線68一個錯誤。解決方法是容易的,用以下內容替換線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.大功告成,去做吧:
假設你安裝了spacepy
與pip下面應該開箱即用:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
如果你有Python的工具包,pip安裝,就可以得到spacepy CDF庫如下:
$ pip install git+https://github.com/spacepy/spacepy.git
注意這將安裝一個很大的依賴性,包括numpy的和SciPy的的。從頭開始安裝可能有點困難。您可能想要首先安裝現成包裝,例如anaconda。一旦完成,只需使用上述命令,spacepy應該像微風一樣安裝。
一旦安裝spacepy是成功的,根據這個example它應該工作是這樣的:
from spacepy import pycdf
cdf = pycdf.CDF('/path/to/file.cdf')
print(cdf)
安裝過程中出現此錯誤:擴展名'ffnet.fortran._ffnet'具有Fortran源代碼,但未找到Fortran編譯器 – seleucia
您安裝了anaconda嗎? – miraculixx
是的,我正在使用anaconda。 – seleucia
前段時間我有同樣的問題。我假設,你在Windows上工作...
根據Spacepy文檔,你需要幾個依賴來使用它的cdf模塊。
第一個它的所有spacepy官方只支持32位的python版本,因此你必須在323bit有python。
第二個,它需要NASA CDF庫安裝在你的系統(也是32位版本)。您可以從 here中獲取。
三與Spacepy依賴着手:
- numpy的
- SciPy的
- matplotlib
- h5py
- networkx
- ffnet
其中大部分都是Anaconda包的一部分。如果他們不是,你只需要安裝他們pip install <package name>
。
如果您在編譯源代碼時遇到問題,我建議您去Christoph Gohlke網站並獲取與您的python版本匹配的預構建的二進制文件。 http://www.lfd.uci.edu/~gohlke/pythonlibs/
這應該讓你用Spacepy CDF模塊去。
您也可以嘗試其他方法。從NASA頁面下載CDF到NetCDF轉換器並在CDF文件上運行它。
Python有很好的netCDF模塊,可以從GitHub或python repo安裝。在這種情況下,您還需要一些依賴項,如HDF5,netCDF-4,numpy,cython。
一旦你有了netCDF文件,你可以通過netCDF模塊或者scipy.io
模塊訪問它。
- 1. 在python中讀取並行netCDF CDF-5格式數據
- 2. 用Python讀取FORTRAN格式的數字
- 3. 如何讀取Python中的cx_Oracle.LOB數據?
- 4. 使用python讀取表格數據
- 5. 如何在Fortran中使用註釋讀取格式化數據?
- 6. 如何讀取JSON格式的字符串數據數據?
- 7. 如何用xlrd讀取公式
- 8. 如何在python中讀取ascii格式化的表格
- 9. 如何使用apache poi獲取公式單元格值(數據)
- 10. 如何用python讀取jquery數據?
- 11. 用d3.dsv.parseRows讀取格式化數據
- 12. 在Octave中讀取多格式數據
- 13. 如何使用PHP讀取JPG格式的XMP數據?
- 14. 如何從localStorage中讀取json格式的數據
- 15. 如何從文件中讀取特定格式的數據?
- 16. Excel-C#:如何從單元格中讀取公式?
- 17. 如何在ruby中讀取電子表格公式值
- 18. Python - 數值表格公式
- 19. 如何讀取XML格式的數據以及如何在Java
- 20. 用python讀表格數據
- 21. 如何使用帶有c#的OpenXML格式SDK以格式讀取數據?
- 22. Python讀取非標準數字格式
- 23. Openpyxl讀取公式結果(Python 2.7)
- 24. 讀取格式不正確的數據
- 25. 在Python中讀取文件並繪製CDF
- 26. 如何從VBA中的公式讀取參數?
- 27. 如何使用SharpPcap以可讀格式從TcpPacket獲取數據?
- 28. 如何讀取格式數據用紅寶石
- 29. 準備數據到python可讀格式
- 30. 使用Python讀取數據
正在尋找此頁面:http://pythonhosted.org/CDF/getting.html? –
@AndreHolzner,我沒有看到它。我怎麼安裝這個蛋文件? – seleucia
@seleucia - 如果問題解決了,你應該考慮接受答案。 – Matteo