具有直接文件访问的自定义csv读卡器实现
csv-position-reader的Python项目详细描述
CSV位置读取器
具有直接文件访问的自定义csv读取器实现
默认内置pythoncsv
库在文件指针上使用8KB
预读缓冲区,使fp.tell()
产生不准确的结果。这个库直接寻址,显式地将文件指针位置与每一行一起传回,并允许直接查找。
参考文献:
- https://docs.python.org/2/library/csv.html
- https://stackoverflow.com/questions/14145082/file-tell-inconsistency/14145118#14145118
- https://stackoverflow.com/questions/12109622/how-to-know-the-byte-position-of-a-row-of-a-csv-file-in-python/12110160#12110160
用法
>>>importcsv_position_reader>>>withopen('tests/data/basic.csv','r')asfp:...reader=csv_position_reader.DictReader(fp)...position,row=reader.next()...print"position: %s"%position...print"row: %s"%row...reader.seek(position)...position_new,row_new=reader.next()...assertposition==position_new...assertrow==row_new...position:26row:{'city':'Atlanta','favorite_color':'black','name':'Sam'}
为什么?/谁在乎呢?
因为在一次浏览csv之后,您现在可以构建一个字典/缓存,其中包含每一行的位置,以便将来访问!你现在离csv驱动的数据库只有一步之遥了!