6

そのため、1 日の 1 秒ごとに値が異なる 4 つの整数のセットを記録する必要があります。すなわち:

#Here the values are initialized to the same value, however they will change as samples are taken
data = [[.25 for numData in range(4)] for numSecs in range(86400)]

明らかに、最初のインデックスの長さが 86400 である 2 次元配列 (その python、LIST) は非常に実用的ではありません。代わりに、次のようにフォーマットされた 86400 行のテキスト ファイルを作成します。

numSec data0 data1 data2 data3

0 .25 .25 .25 .25
1 .25 .25 .25 .25
2 .25 .25 .25 .25
...

そして、サンプルが取得されるときに、このファイルを編集できるようにしたいのです。いや、numSec = サンプルが取得された秒であるファイルの行を編集できるようにしたいのです。たとえば、numSec = 2 (午前 0 時から 2 秒後) に取得されたサンプルでは、​​プログラムは次のようにファイルを編集します。

0 .25 .25 .25 .25
1 .25 .25 .25 .25
2 .70 .10 .10 .10
...

簡単に思えますが、テキスト ファイル内の 1 つのファイルを書き換える方法を示す一連の投稿を読んだこともあります。問題は、ファイル全体を読み込む必要があることです。プログラムが毎秒 86,400 行を読み取ることは望ましくありません。

したがって、私の質問にたどり着きます。変更が必要になるたびにファイル全体を読み取ることなく、テキスト ファイルの 1 行を読み取って編集し、ファイルに書き戻すことはできますか?

PS Ubuntu 12.04 (Precise) を実行していることに注意してください。これは ROS ノードで使用するためのものです。

PPS このプログラムは任意の日数実行されるため、データの「1 秒」ごとに何度も読み書きを行うことができます。また、ファイルを使用したいもう 1 つの理由は、システムをシャットダウンする必要がある場合に、次に実行するときのためにディストリビューションを保存したいからです。

4

4 に答える 4

0

もし私があなたなら、sqlite データベースを使用してレコードを保存します。キーは観察の 2 番目であり、各行は 4 つの値で構成されます。更新と編集ははるかに効率的です。

于 2013-11-01T15:42:13.163 に答える