不按预期生成csv文件

时间:2014-07-25 11:59:36

标签: python csv

这是我的代码段:

import csv
from datetime import datetime
def connection():
    import csv
    new_row = []
    flag = 15
    with open('sample_records.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
            dateObject = datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S')
            minute_of_day = dateObject.minute
            minute_of_day = int(minute_of_day)
            if minute_of_day >= flag:
                file_name_of_new_csv = ("%s.csv" %
                                        dateObject.strftime("%Y-%m-%d_%H:%M"))
                new_csv_writer = csv.writer(open(file_name_of_new_csv, "w"),
                                            delimiter=',')
                new_csv_writer.writerow(new_row)
                if flag + 15 == 60:
                    flag = 0
                flag = flag + 15
                new_row = []
            else:
                new_row.extend(row)

def main():
    connection()

if __name__=="__main__":
    main()

sample_records.csv包含:

2014-07-24 15:00:00,1,1,1,1,1001
2014-07-24 15:01:00,1,1,1,1,1001
2014-07-24 15:02:00,1,1,1,1,1001
2014-07-24 15:15:00,1,1,1,1,1001
2014-07-24 15:16:00,1,1,1,1,1001
2014-07-24 15:17:00,1,1,1,1,1001
2014-07-24 15:30:00,1,1,1,1,1001
2014-07-24 15:31:00,1,1,1,1,1001
2014-07-24 15:32:00,1,1,1,1,1001
2014-07-24 15:45:00,1,1,1,1,1001
2014-07-24 15:46:00,1,1,1,1,1001
2014-07-24 15:47:00,1,1,1,1,1001
2014-07-24 16:00:00,1,1,1,1,1001
2014-07-24 16:01:00,1,1,1,1,1001
2014-07-24 16:02:00,1,1,1,1,1001

这里我试图每小时生成3个csv文件。因此,第15小时包含3个文件,但它不会生成第16个小时的文件。

我得到了第15个小时的csv文件:

2014-07-24_15:15.csv
2014-07-24_15:30.csv
2014-07-24_15:45.csv

但我也应该得到:

2014-07-24_16:15.csv

2 个答案:

答案 0 :(得分:0)

我建议使用调试器并在第

行设置断点
 if minute_of_day >= flag:

然后,您可以观看row[0]minute_of_dayflag的值。这应该有助于理解会发生什么。

答案 1 :(得分:0)

从您的示例中我会说您没有获得16:15因为您的分钟字段中没有带时间戳>= 15的行...

BTW,您可以替换:

if flag + 15 == 60:
  flag = 0
flag = flag + 15

with:

flag = (flag + 15) % 60