2017-03-26 8 views
1

ファイルをAzureファイルストレージアカウントにアップロードし、SAS(共有アクセス署名)を作成しました。のは、問題のファイルをふりをしてみましょうfileA.ncAzureファイルストレージからNetCDFファイルを読み取る

は今、のpython3で、私はfileA.ncを読み取ろうとしていますと呼ばれる:

from netCDF4 import Dataset 

url ='https://<my-azure-resource-group>.file.core.windows.net/<some-file-share>/fileA.nc<SAS-token>'; 
dataset = Dataset(url) 

print(dataset.variables.keys()) 

上記のコードではなく、私に次のようなエラーを与えて、動作しません:

Traceback (most recent call last): File "yadaYadaYada/test.py", line 8, in dataset = Dataset(url) File "netCDF4/_netCDF4.pyx", line 1848, in netCDF4._netCDF4.Dataset.init (netCDF4/_netCDF4.c:13983) OSError: NetCDF: Malformed or unexpected Constraint

これはline 8次のとおりです。

dataset = Dataset(url) 

私は提供されたURLを知っています。私は、ブラウザにファイルのダウンロードを貼り付けた場合、私はこれを言うnetCDF4 documentationを、チェックしている

...:

Remote OPeNDAP-hosted datasets can be accessed for reading over http if a URL is provided to the Dataset constructor instead of a filename. However, this requires that the netCDF library be built with OPenDAP support, via the --enable-dap configure option (added in version 4.0.1).

しかし、私は、Pycharmsがnetcdf4をインストールしたとき場合を言うためにどのよう見当がつかないそれは--enable-dap argumentを使用しましたが、なぜそうでないのか分かりません。また、HTMLを指すURLに固執すると、エラーダンプにHTMLが表示されるので、netcdf4が実際にリモートデータセットをロードしようとしていると思うので、問題はどこか別の場所にあります。

本当にありがとうございます。 Azureからデータセットをロードできるようにする別のPython 3 netCDFライブラリを知っている人がいますか?

UPDATE

さて、私は今confirmのpython netcdf4ライブラリが--OPenDAPが付属していませんことを有効にすることができます

Hello again, netCDF4 1.0.4 with OpenDAP support is now available in the conda respoitory on Unix. To install: $ conda install netcdf4

  • Ilan
+0

こんにちは、私はここOpenDAPとの関係が何であるかわからないんだけど?私はAzureストレージで作業していませんが、OpenDAPを自動的にサポートすることは非常に疑問です。 Azureが直接ファイルを開くことができる場合は、NetCDFファイルも開くことができますが、AWS-S3と似ている場合は、まずローカルディスクにファイルをダウンロードしてから開く必要があります。 – kakk11

答えて

0

を、私は解決策を発見しました。ブラウザにファイルへのリンクを貼り付けると、ファイルがダウンロードされても、Azureファイル共有から直接読み取ることはできません。

私の必要なことは、自分のOSにファイル共有をマウントすることでした。私の場合、私はWindowsを使用していましたが、これはLinuxでも行うことができます。次のコードは、それに応じて変更し、[コマンドプロンプトに配置する必要があります。ファイル共有が搭載されている

net use <drive-letter>: \\<storage-account-name>.file.core.windows.net\<share-name> 

example : 
net use z: \\samples.file.core.windows.net\logs 

たら、それは外付けHDDであるかのように、あなたはそれから読み取ることができます。許可を追加する必要があるかもしれませんが、私はしませんでした。

ここ

は、ファイル共有を実装するためのドキュメントへのリンクは次のとおりです。Documentation

関連する問題