3

たくさんのcsvファイルがあり、それらが定期的に更新される場合。csvファイルが次のようになっているとしましょう。

file1.csv, file2.csv file3.csv

更新プロセス中に、データはcsvファイルの最後の行に追加されます。

ファイルからデータを読み取り、csv更新時にまたはに保存することは可能ですarraycollection(deque)

更新時にcsvファイルからデータを収集する方法はありますか?

4

2 に答える 2

2

Watchdogと呼ばれるPythonパッケージを使用できます。

この例は、ファイルシステムの変更について現在のディレクトリを再帰的に監視し、コンソールにログを記録する方法を示しています。

import time
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

if __name__ == "__main__":
    event_handler = LoggingEventHandler()
    observer = Observer()
    observer.schedule(event_handler, path='.', recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

これをIgnacioの回答と組み合わせて使用​​できます。これを使用file_pointer.tell()してファイル内の現在の位置を取得し、次にseek()そこに移動して、ファイルの残りの部分を読み取ります。例えば:

# First time
with open('current.csv', 'r') as f:
    data = f.readlines()
    last_pos = f.tell() 

# Second time
with open('current.csv', 'r') as f:
    f.seek(last_pos)
    new_data = f.readlines()
    last_pos = f.tell()
于 2013-02-11T02:58:28.463 に答える
0

ファイルの現在のサイズをファイル内の現在のオフセットと比較します。サイズが大きい場合は、新しいデータを読み取ります。

于 2013-02-09T02:03:07.127 に答える