3

如果我有一堆csv文件并且它们会定期更新。假设 csv 文件是:

file1.csv, file2.csv file3.csv

在更新过程中,数据被附加到csv文件的最后一行。

是否可以从csv文件中读取数据并在更新时将其存储在arrayorcollection(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 回答