たくさんのcsv
ファイルがあり、それらが定期的に更新される場合。csvファイルが次のようになっているとしましょう。
file1.csv, file2.csv file3.csv
更新プロセス中に、データはcsv
ファイルの最後の行に追加されます。
ファイルからデータを読み取り、csv
更新時にまたはに保存することは可能ですarray
かcollection(deque)
。
更新時にcsvファイルからデータを収集する方法はありますか?
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()
ファイルの現在のサイズをファイル内の現在のオフセットと比較します。サイズが大きい場合は、新しいデータを読み取ります。