我正在尝试打开一个文件并从最后一点读取。我的文件相当大(20 Mb 到 ~ 1 Gb) 在做了一些研究之后,tell() 和 seek() 似乎是执行此操作的最有效方法之一。我试过下面的代码
opened = open(filename, "rU")
f1 = csv.reader(opened)
k = []
for line in f1:
k.append(opened.tell())
当我这样做时,列表中的每个值都是 8272 Long。这是否意味着我不能使用这个实现?有什么我想念的吗?谢谢你的帮助!
我在 Windows 7 中运行 python 2.7
更新
在将这里学到的所有东西拼凑起来并反复试验后,我得到以下代码
opened = open(filename, "rU")
k = [0]
where = 1
for switch in opened:
where += len(switch) + 1
f = StringIO.StringIO(switch)
interesting = csv.reader(f, delimiter=',')
good_values = interesting.next()
k.append(where)
return k
这允许用户准确地知道文件中的位置,同时仍然能够根据其格式对其进行解析。我不完全确定为什么需要不断添加偏移量(似乎换行符在 len() 中没有准确计算)。