python - 试图理解 python csv .next()

标签 python csv python-2.x

我有以下代码是教程的一部分

import csv as csv
import numpy as np

csv_file_object = csv.reader(open("train.csv", 'rb'))
header = csv_file_object.next()

data = []
for row in csv_file_object:
    data.append(row)
data = np.array(data)

代码按预期工作,但我不清楚为什么在具有变量 header 的文件上调用 .next() 有效。 csv_file_object 不还是整个文件吗?当 for row in csv_file_object 被调用时,程序如何知道跳过标题行,因为变量标题一旦定义就不会被引用?

最佳答案

由于调用 next(),标题行被“跳过”。这就是迭代器的工作方式。

当你遍历一个迭代器时,它的 next() 方法每次都会被调用。每次调用都会推进迭代器。当 for 循环开始时,迭代器已经在第二行,并从那里开始。

这是 the documentationnext() 方法 ( here's another piece ) 上。

重要的是 csv.reader 对象是迭代器,就像 open() 返回的文件对象一样。您可以遍历它们,但它们在任何给定时刻都不包含所有行(或任何行)。

关于python - 试图理解 python csv .next(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14551484/

相关文章:

PythonWin 的 python 交互式 shell 调用构造函数两次?

python - 将值列表传递给函数

python - CFFI - 在 ABI 模式下 C 代码的 Python 回调是否可行?

将具有多个值的字典列表写入多个文件的Python脚本

python - csv writer 在每一行周围加上引号

python - 如何将 python 对象 pickle 到 csv 文件中?

python - 在节点 js (node-gyp) 中使用 npm install 安装 argon2 时出错

python - 用空格环绕表情符号

python - 如何从 python 中的请求中获取响应 SSL 证书?

python - Django-Tastypie 中的多部分/表单数据 POST、PUT、PATCH