请教各位大神,我菜鸟 python 一枚,现在想读取一个超大的 csv 文件,不想每次从头读取,就需要个游标,这个怎么实现呢,万分感谢。。
|  |      1mianju      2018-01-01 10:45:47 +08:00 | 
|      2yearliny      2018-01-01 11:12:57 +08:00 via Android 需要游标你就直接使用游标,不太懂你烦恼哪里 ``` with open('data.csv'): f.seek(10)# 从第 11 行开始读取 c = csv.reader(f) for line in c: print(line) ``` | 
|  |      4bigeast      2018-01-01 12:04:23 +08:00  1 f.seek(10)是往后寻找 10 个字节,并不是 10 行。 可行的做法: import csv with open('test.csv','r') as f: for i in range(10): f.next() reader = csv.reader(f) for row in reader: print(row) 还有你游标是什么意思,csv 读取一次就到内存里了,你直接操作 reader 这个 list 就可以了啊。 | 
|  |      5bigeast      2018-01-01 12:05:07 +08:00 晕,v2ex 编辑太渣了吧,缩进给我吞了 | 
|  |      7bigeast      2018-01-01 13:19:49 +08:00 @psuwgipgf 按照每行平均 80 个字节,100G 的文本文件有 13.5 亿行。 如果你确定需要处理这么大的单独文本文件,首先产生这个文本文件的一方是需要提高姿势水平的。然后说具体做法,最简单的就是把文件分割啊。你要是觉得性能差可以自己去搞一套更高效的没人拦着你😏。 | 
|  |      8likuku      2018-01-01 13:23:06 +08:00 csv 之间先导入 db 吧,之后就随便搞了,节省资源?那就 sqlite | 
|  |      9likuku      2018-01-01 13:24:00 +08:00 把文件当 db 用,拿就是要自己再造一个文件型 db 的轮子了... | 
|      10diggerdu      2018-01-01 13:29:58 +08:00 pandas.read_csv ###END### | 
|  |      11jmc891205      2018-01-01 13:33:02 +08:00 上次读完之后用 f.tell()记一下读到哪里了 下次用 f.seek()直接挪过去 | 
|      12flog OP @yearliny 需要记录上次游标所在的位置,用 f.tell(),可是使用 for 循环读取内容相等于调用 next()方法,然后用 f.tell()会出错,怎么记录上次游标所在位置呢 | 
|  |      15zpole      2018-01-01 15:14:13 +08:00 via iPad 把 csv 存到数据库+1 | 
|  |      16omph      2018-01-01 15:35:45 +08:00 with open('data.csv') as f: for line in f: print(line) | 
|      17yearliny      2018-01-01 15:44:27 +08:00 via Android |