Nat*_*han 17 python for-loop exception
我for在Python中有一个简单的循环,即使异常块包含一个异常块,也会退出异常continue.当它击中IndexError并退出for循环时,仍有大约10行可供阅读.我在这里错过了什么?
for row in hkx: ##'hkx' are rows being read in from 'csv.open'
try:
print row[2],row[4]
except IndexError, e:
print 'Error:',e
print 'Row Data:',len(row),row
continue ## I thought this would just move on to the next row in 'hkx'
Run Code Online (Sandbox Code Playgroud)
(对不起,这里的Python新手......)提前致谢!
Dun*_*can 10
它完全按照预期进行,并继续下一行.如果异常提前终止代码,则它必须不是IndexError,或者必须从try:块外部的某些代码抛出.
>>> hkx = [ range(5), range(4), range(4), range(5) ]
>>> for row in hkx: ##'hkx' are rows being read in from 'csv.open'
try:
print row[2],row[4]
except IndexError, e:
print 'Error:',e
print 'Row Data:',len(row),row
continue ## I thought this would just move on to the next row in 'hkx'
2 4
2 Error: list index out of range
Row Data: 4 [0, 1, 2, 3]
2 Error: list index out of range
Row Data: 4 [0, 1, 2, 3]
2 4
>>>
Run Code Online (Sandbox Code Playgroud)
请注意,如果该行包含至少3个项目,您将获得一半的打印输出,如果您使用格式字符串,则可以避免这种情况.(例如print "{} {}".format(row[2],row[4]))
你还没有说过如何定义hkx,除非它来自csv.open.如果它是一个生成器而不是一个简单的列表,那么它可能只是迭代它抛出IndexError.在那种情况下,你不会捕获,但堆栈转储将显示与行的行for row in hkx.
| 归档时间: |
|
| 查看次数: |
39493 次 |
| 最近记录: |