我需要读取几百万行的CSV。该文件全天增长。每次我处理文件后(并将每一行压缩成一个字典),我再次启动该过程,除了为新行创建dict。
为了获得新的线路,我必须使用CSV阅读器迭代每一行,并将行号与我的最后一行读取'号码(据我所知)。
有没有办法只是跳过'那个行号?
答案 0 :(得分:2)
您不能转到特定的行号,除非行的大小是固定的并且您知道此大小。当我说你做不到时,我的意思是你不能不将整个文件加载到内存中并用\n
字符分割。
如果您的CSV具有如下固定大小:
id,code,quantity
0001,ABC43,00100
0002,D2ZAD,00020
....
每条线的长度相同,然后您可以移至linesize*(linenumber+1)
,其中linenumber
是您要去的线。
否则,您需要遍历整个文件以获取n
行...它存在一个内置模块,名称linecache
,它可以帮助您:Go to a specific line in Python? < / p>
答案 1 :(得分:0)
如果我这样做,我想我会在每次读取后添加一个标记行 - 在再次保存文件之前,然后我会以字符串形式读取文件,在标记上拆分,转换回列表和提要该过程的清单。