如何读取动态csv文件?

时间:2017-07-21 22:21:12

标签: python 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行开始?任何帮助和指针将不胜感激。

1 个答案:

答案 0 :(得分:3)

如果文件不断增长

您需要跟踪目前已完全阅读的位置, 并在下次调用该函数时执行 seek , 跳到你离开的地方。

为了实现这一点,你可以创建一个存储搜索位置的类, 以及从最后一个搜索位置读取的功能,并进行更新。 或者,你可以保留当前的功能,但是它需要为搜索位置增加一个输入,并使它返回新的搜索位置作为附加输出。

如果文件是流,则永远打开,永远不能完全阅读

而不是将行读取到数组并返回数组, 行到达时function President(name) { var presidentName = name; return { getName: function() { return presidentName; }, setName: function(name) { presidentName = name; } }; }

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

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