使用 csv 文件可能没有直接的方法来完成您所要求的事情(除非我误解了您)。问题在于,除非文件专门设计为具有固定宽度的行,否则任何文件都没有“列”的意义。CSV 文件通常不是这样设计的。在磁盘上,它们只不过是一根巨大的字符串:
>>> import csv
>>> with open('foo.csv', 'wb') as f:
... writer = csv.writer(f)
... for i in range(0, 100, 10):
... writer.writerow(range(i, i + 10))
...
>>> with open('foo.csv', 'r') as f:
... f.read()
...
'0,1,2,3,4,5,6,7,8,9\r\n10,11,12,13,14,15,16,17,18,19\r\n20..(output truncated)..
如您所见,列字段无法按预期排列。第二列从索引 2 开始,但在下一行中,列的宽度增加了 1,从而导致对齐失效。当输入长度变化时,情况会更糟。结果是 csv 阅读器将不得不读取整个文件,丢弃您不使用的数据。(如果您不介意,那就是答案 - 逐行读取整个文件,丢弃您不会使用的数据。)
如果您不介意浪费一些空间并且知道您的数据不会超过某个固定宽度,您可以创建一个具有固定宽度字段的文件,然后您可以使用偏移量来查找它。但是,一旦你这样做了,你还不如开始使用真正的数据库。PyTables似乎是许多存储 numpy 数组的首选。