如何读取动态 csv 文件?



下面的函数读取一个csv文件并将其附加到列表中,然后我在另一个函数中使用该列表。

def get_csv_data(csv_path):
"""
read test data from csv and return as list
@type csv_path: string
@param csv_path: some csv path string
@return list
"""
rows = []
csv_data = open(str(csv_path), "r")
content = csv.reader(csv_data)
# skip header line
next(content, None)
# add rows to list
for row in content:
rows.append(row)
return rows

我现在遇到的问题是csv由另一个函数实时动态填充。将 csv 读取到当前最后一行然后再次读取它而忽略先前读取的行的最佳方法是什么。需要明确的是,我的意思是当函数读取 csv 时,例如到 8 行,然后 csv 更新更多数据,下一次运行如何从第 9 行开始?任何帮助和指针将不胜感激。

如果文件持续增长

您需要跟踪到目前为止已完全阅读的位置, 下次调用该函数时,执行搜索, 以跳转到上次中断的位置。

为了实现这一点,你可以创建一个类来存储查找位置, 以及从最后一个搜索位置读取并更新它的函数。 或者,您可以保留当前函数,但使其为寻道位置提供额外的输入,并使其返回新的寻道位置作为附加输出。

如果文件是流,则永久打开且永远无法完全读取

而不是将行读取到数组并返回数组, 在行到达时yield行。

如果文件在新内容到达时被截断

这将是一个脆弱的设置, 因为您可能会错过数据, 在它被截断之前不阅读它。 所以这可能不值得认真考虑。

最新更新