1

かなり検索しましたが、特定の行番号の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

coloumn0からのデータをcsvファイルに追加したいコレクション(deque)があります。

現時点では、私が書いたコードはこれを行うことができます:時間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'])]

1行を読んで次のファイルにジャンプすることは可能ですか?これを可能にするライブラリはありますか?

私の言いたいことが分かりますか?または私はいくつかの情報を提供するために逃していますか?

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
4

1 に答える 1

2

実際にファイルを逆方向​​に読みたいですか?投稿した内容から、最後の5行を処理したいようです。それ以外の場合は、t2でdeque(['5'、 '8'、 '11'、 '14'、 '17'])の代わりに処理します。 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
于 2013-02-09T01:58:56.740 に答える