我不是一个蟒蛇怪,但试图使用来自类似问题的几个答案的信息来解决这个问题,但似乎没有一个真正起作用。这是:
我从python脚本调用函数: 这是功能:
def getsom(X):
#some codes
try:
st = get data from site 1 using X
except:
print "not available from site 1, getting from site 2"
st = get data from site 2 using X
#some codes that depend on st
我从python脚本中调用它:
#some codes
for yr in range(min_yr,max_yr+1):
day=1
while day<max_day:
st1 = getsom(X)
#some code that depends on st1
day+=1
当特定日期的网站1或2上的数据可用时,此方法可以正常工作,但如果在另一天的两个网站上都不可用,则会发生故障。
如果两个站点的特定日期数据不可用,我希望能够检查第二天。我已经尝试了不同的try配置,但没有成功,并希望以最有效的方式获得任何帮助。
谢谢!
***编辑 最终版本有效:
在功能部分:
def getsom(X):
#some codes
try:
st = get data from site 1 using X
except:
print "not available from site 1, getting from site 2"
st = get data from site 2 using X
try:
st = get data from site 2 using X
except:
print "data not available from sites 1 and 2"
st=None
if st is not None:
#some codes that depend on st
为了在脚本端迭代到第二天,我必须使用另一个try / except块处理该函数的无案例:
#some codes
for yr in range(min_yr,max_yr+1):
day=1
while day<max_day:
try:
st=getsom(X)
except:
st=None
if st is not None:
#some codes that depend
答案 0 :(得分:2)
如评论中所述,您似乎希望在第一级异常处理程序中捕获异常。你可以这样做:
def getsom(X):
#some codes
try:
st = get data from site 1 using X
except:
print "not available from site 1, getting from site 2"
try:
st = get data from site 2 using X
except:
print "Not available from site 2 as well."
# Here you can assign some arbitrary value to your variable (like None for example) or return from function.
#some codes that depend on st
如果两个网站上都没有数据,您可以为变量st
分配一些任意值,或者只是从函数返回。
这是你在找什么?
此外,您不应该简单地编写except
而不指定您期望的异常类型 - 请点击此处获取更多信息:Should I always specify an exception type in `except` statements?
编辑以在评论中回答问题:
如果您没有关于某一天的数据,您可以return None
并按照以下方式处理:
#some codes
for yr in range(min_yr,max_yr+1):
day=1
while day<max_day:
st1 = getsom(X)
if st1 is not None:
#some code that depends on st1
day+=1
答案 1 :(得分:0)
为什么不为它创建单独的功能?
def getdata(X):
for site in [site1, site2]: # possibly more
try:
return get_data_from_site_using_X()
except:
print "not available in %s" % site
print "couldn't find data anywhere"
然后getsom
成为:
def getsom(X):
#some codes
st = getdata(X)
#some codes that depend on st