Когда я запустил ваш код с недопустимым символом тикера, у меня возникла та же проблема с просто зависшим интерпретатором Python.Я не нашел полностью опрятного решения, но, основываясь на несколько связанном отчете о проблеме, который я прочитал на github ( ссылка здесь ), я нашел ответ, который не даст интерпретатору python зависать, еслиВы вводите недопустимый символ тикера.
Кажется, ключ устанавливает параметр retry_count
в pandas_datareader.data.DataReader()
равным нулю.
Ниже приведен полностью воспроизводимый фрагмент кода:
import pandas_datareader
import datetime
start = datetime.datetime(2018, 5, 1)
end = datetime.datetime(2018, 5, 30)
def get_data(ticker):
try:
df = pandas_datareader.data.DataReader('%s' % (ticker), 'morningstar', start, end, retry_count=0)
print(df.tail(5))
except ValueError:
print('Ticker Symbol %s is not available!' % (ticker))
get_data('TSLA') #valid Symbol
get_data('yyfy') #not a valid Symbol
get_data('AAPL') #valid Symbol
get_data('QQQQ') #not a valid Symbol
с ожидаемым результатом:
Symbol Date Close High Low Open Volume
TSLA 2018-05-24 277.85 281.110 274.89 278.4000 4190598
2018-05-25 278.85 279.640 275.61 277.6252 3875082
2018-05-28 278.85 278.850 278.85 278.8500 0
2018-05-29 283.76 286.500 276.15 278.5100 5666640
2018-05-30 291.72 295.005 281.60 283.2900 7428352
Ticker Symbol yyfy is not available!
Symbol Date Close High Low Open Volume
AAPL 2018-05-24 188.15 188.84 186.21 188.77 20330134
2018-05-25 188.58 189.65 187.65 188.23 17460963
2018-05-28 188.58 188.58 188.58 188.58 0
2018-05-29 187.90 188.75 186.87 187.60 22514075
2018-05-30 187.50 188.00 186.78 187.72 18430891
Ticker Symbol QQQQ is not available!