Python 从CSV文件中读取特定行

Python 从CSV文件中读取特定行,python,csv,Python,Csv,我有一个十行CSV文件。从这个文件中,我只想要,比如说,第四行。最快的方法是什么?我要找的东西是: with open(file, 'r') as my_file: reader = csv.reader(my_file) print reader[3] 其中,reader[3]显然不符合我想要实现的语法。如何将阅读器移动到第4行并获取其内容?如果只有10行,则可以将整个文件加载到列表中: with open(file, 'r') as my_file: reader

我有一个十行CSV文件。从这个文件中,我只想要,比如说,第四行。最快的方法是什么?我要找的东西是:

with open(file, 'r') as my_file:
    reader = csv.reader(my_file)
    print reader[3]

其中,
reader[3]
显然不符合我想要实现的语法。如何将阅读器移动到第4行并获取其内容?

如果只有10行,则可以将整个文件加载到列表中:

with open(file, 'r') as my_file:
    reader = csv.reader(my_file)
    rows = list(reader)
    print rows[3]
对于较大的文件,请使用:


从CSV文件打印一行的时间复杂度(以这种方式)是否为O(1)?如果没有,有没有办法在固定的时间内从CSV文件中读取一行内容?@Mencia:你的问题很混乱。首先你要讲打印,然后读一行。接下来,Big O处理渐近行为,说明如果要将项目数量增加到无穷大,则所用的时间如何随着处理的项目数量的变化而变化。因此,对于N行中的一行来说,谈论O(…)性能通常没有什么意义。如果它是一行,那么它就是一行,所以与整个文件相比总是O(1)。@Mencia:接下来,文件I/O涉及大量缓冲。因此,
next(reader)
,从CSV文件生成一行将触发缓冲读取,将数据块读入Python进程,然后从字节中解码,然后需要定位下一行分隔符,然后CSV模块需要将文本行拆分为列。I/O缓冲区的读取速度将是最慢的,只要第一行适合该块(通常约为8kliobytes),无论文件大小或行长度如何,您都不会看到性能上的任何差异。担心这一点毫无意义。
from itertools import islice

with open(file, 'r') as my_file:
    reader = csv.reader(my_file)
    print next(islice(reader, 3, 4))