0

我有一个这样的 CSV 文件:

2021-08-09 15:50:44      38962 part-00000-6baa0883-5212-49f7-9ba2-63a352211fdd-c000.snappy.parquet
2021-08-09 16:50:44      38962 part-00000-6baa0883-5212-49f7-9ba2-63a352211fdd-c000.snappy.parquet

我想将所有时间戳提取到一个列表中,以便我可以执行下面的评估功能(即评估是否check_timestamps_updated为真)。

问题还在于考虑日期,而不仅仅是时间。csvreader object将两个单独的列(日期和时间)组合起来以便与它进行比较的最有效方法是control_time什么?

from datetime import datetime as dt

control_time = str(str(dt.now()))
reader = csv.reader(results, delimiter=" ")
        time_column = list(zip(*reader))[1]
        check_timestamps_updated = all(i >= control_time for i in time_column)
4

1 回答 1

0

据我了解,您想要做的可以如下实现,

import csv
from datetime import datetime as dt

check_timestamps_updated = True
control_time = dt.now().timestamp()
with open('example.csv', newline='\n') as f:
    reader = csv.reader(f, delimiter=" ")
    for line in reader:
        date = dt.strptime(f'{line[0]} {line[1]}', '%Y-%m-%d %H:%M:%S').timestamp()
        if date >= control_time:
            check_timestamps_updated = False
print(check_timestamps_updated)

您询问了合并两列的最有效方法,但我认为这取决于您提到的效率。如果 csv 文件太大并且有可能出现内存问题,那么我上面实现的方法可以毫无问题地工作。但是,如果您提到时间,这仍然是一个不错的选择。

于 2021-08-09T21:52:15.227 回答