Python尝试除了无法捕获RemoteDataError

时间:2017-04-01 18:09:04

标签: python try-catch yahoo-finance except

我使用以下代码从纳斯达克下载的列表符号中读取yahoo finance的数据。

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))  

猜猜某些符号可能无效,Yahoo Finance会抛出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

2 个答案:

答案 0 :(得分:0)

您需要处理加注异常,否则它将在凸起的位置停止。因此,如果没有捕获和处理引发异常,它将被中断。

你需要的是这样的东西:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre>
  a
  b
  c
  d
  q
  w
  e
  r
  t
  y
  u
  i
  o
  p
  a
  s
  d
  f
  g
  h
  j
  k
  l
  z
  x
  c
  v
  b
  n
  m
  <span id="goToTop">go to top</span>
</pre>

有关错误的详细信息,请参阅this documentation

答案 1 :(得分:0)

从另一个页面获取了此导入;它似乎为我解决了这个问题。尝试从Yahoo提取股票数据时遇到一个远程错误。在添加RemoteDataError异常之前,您需要执行以下导入:

from pandas_datareader._utils import RemoteDataError

df_ = pd.DataFrame()
for i in assets:
    print(i)
    try:
        vec = web.DataReader(i, 'yahoo', start='12/10/2006', end='2/1/2007')
        vec['asset'] = i
        vec['returns_close_raw'] = np.log(vec.Close/vec.Close.shift())
        vec['returns_open_raw'] = np.log(vec.Open/vec.Open.shift())
        vec['returns_open_raw10'] = np.log(vec.Open/vec.Open.shift(10))
        vec['returns_close_raw10'] = np.log(vec.Close/vec.Close.shift(10))
        df_ = pd.concat([df_, vec])

    except RemoteDataError:
        print('remote error')

    except KeyError:
        print('key error')