Python 读取特定日期范围内的csv

Python 读取特定日期范围内的csv,python,Python,我有以下代码,它使用DictReader读取csv,然后从csv中的每个列创建一个列表: myfile = csv.DictReader(open('data_in/' + filename + '.csv', 'r'), delimiter=',', skipinitialspace=True) date, openp, highp, lowp, closep = [], [], [], [], [] for line in myfile: if md

我有以下代码,它使用DictReader读取csv,然后从csv中的每个列创建一个列表:

    myfile = csv.DictReader(open('data_in/' + filename + '.csv', 'r'), delimiter=',', skipinitialspace=True)

    date, openp, highp, lowp, closep = [], [], [], [], []
    for line in myfile:
        if mdates.datestr2num(line['Date']) >= mdates.datestr2num('01/01/2014'):
            date.append(mdates.datestr2num(line['Date']))
            openp.append(int(line['Open']))
            highp.append(int(line['High']))
            lowp.append(int(line['Low']))
            closep.append(int(line['Close']))
代码可以工作,但正如您在将列添加到相关列表时所看到的,我只包含>=特定日期的日期。这意味着我已经读取了整个csv文件,之后我只使用基于日期的数据子集

有没有办法在读取csv时进行日期检查,这样我就不必占用内存来存储我不打算使用的数据


非常感谢。

文件是按日期排序的吗?是的,文件是按日期排序的。当您遇到太久的日期时,请停止迭代。此外,在每次迭代中重新计算固定日期也是一种浪费。结果不会改变。在循环之前计算一次。谢谢,这是只计算固定日期一次的好观点。但我不确定你所说的“当我遇到一个太久的约会时停止重复”是什么意思。你是说我还得用DictReader读取整个文件?我希望有一种方法可以只读取正确的日期范围,因此不会浪费内存。这取决于您的日期是先升后降。如果它们在提升,那么你必须循环通过旧的到达新的。在这种情况下,你所拥有的是最好的。如果日期在下降,那么当你到达一个太旧的日期时,你可以停止,因为你知道其余的日期也会太旧。要做到这一点,只需在if中添加一个else子句并中断循环。