2016-11-15 62 views
1

是否有加載/讀取numpy中的外部文件(即AWS S3)?我有幾個存儲在S3中的npy文件。我試圖通過S3 presigned url來訪問它們,但似乎numpy.load方法或np.genfromtxt都無法讀取它們。從Python中加載npy文件

我不想保存本地文件系統上的文件,然後將它們加載到numpy上。

有什麼想法?

+0

當然,你需要一些額外的層做所有的網絡協議的工作! Numpy的IO可能僅適用於基於文件的IO。在Python3中,你可以嘗試'''導入請求; import BytesIO; request = requests.get(url); np.load(BytesIO(request.content))'''。 – sascha

+0

當然,我的代碼片斷假定S3鏈接是公共的,不需要身份驗證。我不知道情況是否如此。如果沒有,你需要一些庫來完成這個文件的訪問。 – sascha

+0

你能夠使用'requests'讀取文件嗎? –

回答

0

我成功使用了boto和StringIO。 使用boto連接到S3並獲得您的存儲桶。然後用以下代碼將文件讀入numpy:

import numpy as np 
    from StringIO import StringIO 
    key=bucket.get_key('YOUR_KEY') 
    data_string=StringIO(key.get_contents_as_string()) 
    data = np.load(data_string) 

我不確定這是最有效的方法,但它不需要公共URL。

乾杯, 邁克爾