问题
不使用for循环,处理某个可迭代对象中的元素。
解决方案
要手动访问可迭代对象中的元素,可以使用next()函数,然后自己编写代码来捕捉StopIteration异常。例如,采用手工的方式从文件passwd中读取文本行:
#passwd
123abc
aaa
dedeow
345dibe
with open('passwd') as f:
try:
while True:
line = next(f)
print (line, end='')
except StopIteration:
pass
#输出结果
#123abc
#aaa
#dedeow
#345dibe
一般来说,StopIteration异常是用来通知我们迭代结束的,但是,如果是手动使用next(),也可以命令它返回一个结束值,比如说None。示例如下:
with open('passwd') as f:
while True:
line = next(f,None)
if line is None:
break
print (line, end='')
#输出结果
#123abc
#aaa
#dedeow
#345dibe
网友评论