如果我有一堆csv
个文件,它们会定期更新。
假设csv文件是:
file1.csv, file2.csv file3.csv
在更新过程中,数据会附加到csv
文件的最后一行。
是否可以从csv
文件中读取数据,并在更新后将其存储在array
或collection(deque)
中。
有没有办法在csv文件更新时从中收集数据?
答案 0 :(得分:1)
您可以使用名为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()
答案 1 :(得分:0)
将文件的当前大小与文件中的当前偏移量进行比较。如果大小更大,请阅读新数据。