【发布时间】:2018-05-21 21:29:21
【问题描述】:
我有一个包含日期和浮点数的 CSV 文件(日、月、年、浮点数)。这是示例,
1,1,2000,4076.79
2,1,2000,1216.82
3,1,2000,1299.68
4,1,2000,637.36
5,1,2000,3877.91
6,1,2000,3308.99
7,1,2000,2925.93
8,1,2000,1559.09
9,1,2000,3190.81
10,1,2000,3008.66
11,1,2000,2026.35
12,1,2000,3279.61
13,1,2000,3601.6
14,1,2000,2021.1
15,1,2000,2103.62
16,1,2000,609.64
17,1,2000,633.16
18,1,2000,1195.34
我想先读第一行,然后读最后一行:
handle = open(getInputFileName(), "r")
getInputFileName() 观察。是一个返回文件名的函数。那么,
print "numberlines", numberLines #DEBUG#
>>> 3660
numberLines 是文件中的行数。那么,
handle.seek(0)
lineData = handle.readline().split(",")
print lineData #DEBUG#
>>> ['1','1','2000','4076.79\n']
直到这里一切正常。但是,
handle.seek(numberLines-1)
lineData = handle.readline().split(",")
print lineData #DEBUG#
>>>['7', '7', '2000', '2347.51\n']
但实际上文件的最后一行是31,12,2009,3823.02
为什么不寻求一路下降?
我尝试删除卡住的行,但随后程序崩溃了ValueError: could not convert string to float:(然后我使用 lineData 作为浮点数):
newestDate.insert(1,float(lineData[1]))
如果行有问题,我检查了文件,但格式从未改变。为什么我的代码在第一行而不是最后一行?
【问题讨论】:
-
seek 以字节为单位寻找文件位置。不是行号。阅读独库:docs.python.org/2/library/…
标签: python python-2.7 csv file-io seek