【问题标题】:how to repeat exception handling on python如何在python上重复异常处理
【发布时间】:2017-09-05 14:01:11
【问题描述】:
import pandas_datareader.data as web
import pandas, xlrd
from datetime import datetime, timedelta
import csv

end = datetime.now() # 마지막 날을 오늘로 설정
start = end - timedelta(days=250) # 시작 날을 오늘로 부터 250일 전으로 설정

stock_code = pandas.read_excel('/home/ubuntu/trading/Book1.xlsx', dtype=str, encoding="CP949").as_matrix()

#250일 모멘텀 계산
for st in stock_code:
    eventcode = st[0]
    try:
        df = web.DataReader("krx:%s" % eventcode, "google", start, end) #코스피이면 구글에서 데이터 받음
    except:
        df = web.DataReader("%s.KQ" % eventcode, "yahoo", start, end) #코스닥이면 야후에서 데이터 받음
        try:
            df=web.DataReader("%s.KQ" % eventcode, "yahoo", start, end) #코스닥이면 야후에서 데이터 받음
        except:
            df = web.DataReader("%s.KQ" % eventcode, "yahoo", start, end)  # 코스닥이면 야후에서 데이터 받음
    close = df['Close']
    num = len(close)

    sum = 0
    for x in range(0, num - 1):
        if close[x + 1] / close[x] == 1: #당일 종가가 전날 종가와 같으면 0 추가
            sum = sum + 0
        elif close[x + 1] / close[x] > 1: #당일 종가가 전날 종가 보다 높으면 1 추가
            sum = sum + 1
        else: #당일 종가가 전날 종가가 낮으면 -1.
            sum = sum - 1
    print(sum) #최종값

亲爱的。 我想从谷歌和雅虎获取股票数据。 有时它无法从雅虎获取数据。但是几秒钟后再试一次,我可以得到数据。

所以我使用 try 和 except。 如果我无法从雅虎获取数据。我想再试3次。 所以我把try and except放在了except中。 但它不起作用。

如何解决?

这是错误

pandas_datareader._utils.RemoteDataError: Unable to read URL: https://query1.finance.yahoo.com/v7/finance/download/003100.KQ?period1=1483019682&period2=1504655999&crumb=Vxp9S4A%5Cu002FjwQ&interval=1d&events=history

【问题讨论】:

  • 尝试使用time.sleep()在重试之间引入延迟

标签: python pandas exception


【解决方案1】:

您可以使用睡眠逻辑,也可以限制重试次数,

df = 无

当 df 为无时:

try:

    df = web.DataReader("krx:%s" % eventcode, "google", start, end) 

except:

sleep(1000)
df = None

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多