最近在看python编程:从入门到实践里面读文件有用函数next(),对此函数不是很理解,看的代码如下:
import csv
filename='E:\python学习\pcc-master\chapter_16\sitka_weather_07-2014.csv'
with open(filename) as f:
reader=csv.reader(f)
header_row=next(reader)
for index,column_header in enumerate(header_row):
print(index,column_header)
然后查了一下python的文档,里面的解释是The next() function returns the next item from the iterator.
这个函数的参数是迭代器(iterator)和一个default
next(iterator, default)
default是迭代器已经到了最末端,再调用next()函数的输出值。不填这个参数的话,到了最末端还用next()的话会报错。
random = [5, 9, 'cat']
# converting list to iterator
randomIterator = iter(random)
print(randomIterator)
# Output: 5
print(next(randomIterator))
# Output: 9
print(next(randomIterator))
# Output: 'cat'
print(next(randomIterator))
# This will raise Error
# iterator is exhausted
print(next(randomIterator))
这里的输出为
5
9
cat
Traceback (most recent call last):
File “python”, line 18, in
StopIteration
而添加了default之后的例子如下:
random = [5, 9]
# converting list to iterator
randomIterator = iter(random)
# Output: 5
print(next(randomIterator, '-1'))
# Output: 9
print(next(randomIterator, '-1'))
# randomIterator is exhausted
# Output: '-1'
print(next(randomIterator, '-1'))
print(next(randomIterator, '-1'))
print(next(randomIterator, '-1'))
输出如下:
5
9
-1
-1
-1
因此在python编程:从入门到实践里面的代码输入的是scv文件的迭代器,其指向文件的第一行,用了next之后,此迭代器指向文件的第二行,进行读取。