从csv读取最近5分钟

时间:2019-07-20 12:27:26

标签: python python-3.x csv

我每5-15秒钟从足球/足球中获取一些数据,并将它们保存在csv文件中。 我有两列时间,一列是“ tm”(时间分钟0-90),另一列是“ ts”(时间秒0-60),以便了解我从excel提供的一些照片:

CSV Table

现在我正试图从csv中获取最后五分钟的结果,但是我不知道如何。 我还可以更改将数据导入到csv的代码,如果有任何方法可以使其更容易阅读和计算最近5分钟。

我用来读取所有csv文件并尝试获取最后30行的代码,看看是否是5分钟但是4-6分钟,所以我不会得到发生的数据。

csv_list = [f for f in listdir(mypath) if isfile(join(mypath, f))]
for fn in csv_list:
    filepath = os.path.join(mypath + fn)
    with open(filepath, "r") as f:
        row_count = sum(1 for row in f)
        f.close()
        if row_count >= 30:
            with open(filepath, "r") as f:
                for line in (f.readlines()[-30:]):
                    line = (line.strip().split(","))
                    minutes.append(line[0])
                print(minutes, line[27])
                minutes.clear()
        else:
            print("is less")

1 个答案:

答案 0 :(得分:0)

我知道我的解决方案不是最好的,但是您可以将时间戳记保存到每条记录中 =>获取最后的X(您肯定知道的记录数,该记录数在5分钟内会大于记录数)。 =>获取X行中所有时间戳大于该行时间戳的行(现在减去5分钟增量)

        $query = Ad::query();
        $query->where('category_id', $sub_category->category_id)->with(['description', 'resources', 'category.description', 'category.parent.description', 'promo', 'stats']);

        //Bunch of conditions here? ...

        //Minimal Price
        if (null !== Input::get('min_price')) {
            $query->when(request('min_price') >= 0, function ($q) {
                return $q->where('price', '>=', request('min_price', 0));
            });
        }


        //Maximum Price
        if (null !== Input::get('max_price')) {
            $query->when(request('max_price') >= 0, function ($q) {
                return $q->where('price', '<=', request('max_price', 0));
            });
        }


        //Order
        $query->orderBy('updated_at', 'desc');

        $ads = $query->get();