2017-04-01 147 views
1

我正在使用以下代碼從從納斯達克下載的列表符號中讀取來自雅虎財經的數據。Python嘗試除了未能捕獲RemoteDataError

pnls = {i:dreader.DataReader(i,'yahoo','1985-01-01','2017-03-30') for i in symbols} 

for df_name in pnls: 
    try: 
     pnls.get(df_name).to_csv("/Users/Jiong/Documents/data/{}_data.csv".format(df_name), index=True, header=True) 
    except: 
     print("error {}".format(df_name)) 
    else: 
     print("done {}".format(df_name)) 

猜猜一些符號可能不是有效的,雅虎財經拋出RemoteDataError Exception

上面的代碼應該繼續,但它仍停在錯誤。

是不是除了捕獲所有異常?或者這是運行時錯誤?

無論如何獲取代碼忽略它並繼續?謝謝。請參閱下面的錯誤運行

118   if params is not None and len(params) > 0: 
119    url = url + "?" + urlencode(params) 
--> 120   raise RemoteDataError('Unable to read URL: {0}'.format(url)) 
121 
122  def _read_lines(self, out): 

RemoteDataError: Unable to read URL: http://ichart.finance.yahoo.com/table.csv?c=1985&f=2017&s=MITT%5EA&g=d&ignore=.csv&d=2&e=30&a=0&b=1 

回答

0

您需要處理的加薪異常,也將在地方停止募集。所以,如果一個異常沒有被捕獲和處理,它將被中斷。

你需要的是這樣的:

except RemoteDataError as exp : 
    print('Unable to read URL: {0}'.format(url)) 

您可以參考this documentation關於錯誤的詳細信息。

+0

謝謝!它仍然會引起錯誤。我讀取excelle無異常名稱將捕獲所有異常。 – user4224870

+0

是的,但禁止所有例外情況不是一個好習慣。首先通過刪除'try-catch'塊來識別正確的名稱,並且只將除了必需的名稱。 –

+0

任何想法爲什麼它仍然停止,即使異常處理?這是由於它是一個運行時錯誤? – user4224870