2015-04-20 139 views
1

我運行下面的代碼,運行正常,當我硬編碼值「NoneType」對象有沒有屬性「得到」

from nsetools import Nse 
nse = Nse() 
with open('all_nse_stocks') as nse_stocks: 
    for stock in nse_stocks: 
     q = nse.get_quote('INFY') 
     print q.get('open'), '\t', q.get('lastPrice'), '\t', q.get('dayHigh'), '\t', q.get('dayLow') 

看到,我有硬編碼值nse.get_quote('INFY 「) 但是當我運行下面的代碼,我得到以下錯誤:

from nsetools import Nse 
nse = Nse() 
with open('all_nse_stocks') as nse_stocks: 
    for stock in nse_stocks: 
     q = nse.get_quote(stock) 
     print q.get('open'), '\t', q.get('lastPrice'), '\t', q.get('dayHigh'), '\t', q.get('dayLow') 

錯誤:

Traceback (most recent call last): 
    File "test.py", line 6, in <module> 
    print q.get('open'), '\t', q.get('lastPrice'), '\t', q.get('dayHigh'), '\t', q.get('dayLow') 
AttributeError: 'NoneType' object has no attribute 'get' 

認罪se幫助

+0

q = nse.get_quote(stock)返回None。檢查哪些nse_stocks可用。 – RvdK

+0

'all_nse_stocks'看起來像什麼? – MattDMo

+0

all_nse_stocks是一個包含INFY的文件 – user3198755

回答

6

NoneType object has no attribute ...意味着您有一個對象爲None,並且您正嘗試使用該對象的屬性。

在你的情況下,你在做q.get(...),所以q必須是None。由於q是致電nse.get_quote(...)的結果,該函數必須有可能返回None。您需要調整您的代碼以考慮這種可能性,比如嘗試使用它之前檢查的結果:

q = nse.get_quote(stock) 
if q is not None: 
    print ... 

問題的根源很可能在你是如何讀取文件。 stock將包括換行,所以你應該帶,其關閉主叫nse.get_quote前:

q = nse.get_quote(stock.strip()) 
+0

Hello Bryan,我只在all_nse_stocks中有一個值,即INFY。如果我硬編碼,那麼我得到正確的輸出。問題是隻有當我從文件 – user3198755

+0

@ user3198755讀取值時:您是否嘗試過_any_調試?例如,在獲得報價之前打印'stock'的值。 –

+0

是的,在for循環之後,我嘗試打印庫存值,它給出了正確的值,即INFY – user3198755

0

請 Q = nse.get_quote檢查「存量」的類型(股票)

它必須是一個字符串。另外nestools只支持Python2,你還沒有澄清你的python版本。

如果您在閱讀時仍然遇到問題,請告訴我。

相關問題