我搜索了很多,但我找不到从特定行号读取csv文件中数据的方法。
csv文件即时更新。更准确地说,分隔符是制表符空间 所以,在时间t1:
1 2 3
5 6 7
8 9 10
11 12 13
14 15 16
在时间t2
1 2 3
5 6 7
8 9 10
11 12 13
14 15 16
17 18 19
我有一个集合(deque),我想在其中附加coloumn0 csv文件中的数据。
目前我编写的代码能够执行此操作: 在时间0:
[deque([0, 0, 0, 0, 0], maxlen=5)]
在时间1:
[deque(['1', '5', '8', '11', '14'])]
在时间2:
[deque(['5', '8', '11', '14','17'])]
我编写的代码是以我想要的格式阅读它。
Question:
但是当我在'x'点再次重新打开文件时。它应该从
中读取[deque(['8', '11', '14','17','x'])]
而不是
[deque(['1', '5', '8', '11', '14'])]
我可以读一行并跳转到下一个文件吗?有一个图书馆可以让我这样做吗?
我清楚了吗?或者我错过了提供一些信息?通过从kurtis(所有学分给他)的输入更新这个问题的答案:
perf_his = []
for a in range(len(filename)):
perf_his += [deque([0]*5,maxlen=5)]
for a in range(len(filename)):
lines = open(filename[a]).readlines()[-NUM_LINES:]
mydata = [line.split()[0] for line in lines]
for i in range(0, len(mydata)):
perf_his[a].append(mydata[i])
print perf_his
答案 0 :(得分:2)
你真的想要向后阅读文件吗?根据你发布的内容,看起来你只想处理最后5行 - 否则不是deque(['5','8','11','14','17'])在t2你会有deque(['17','14','11','8','5'])。
假设你真正想做的只是处理最后5行,你可以做这样的事情 -
from collections import deque
NUM_LINES=5 #The number of lines to process. Should equal the deque maxlen
lines = open("myfile.csv").readlines()[-NUM_LINES:] #Assumes the file can fit into memory
mydata = [line.split()[0] for line in lines]
d = deque(mydata, maxlen=NUM_LINES)
print d