从平面文件求和日期时间值

时间:2016-06-04 19:46:10

标签: python python-2.7 datetime

我试图将存储在平面文件中的平均时间值相加。 我在循环时间值时遇到错误。

错误:

public static Line enterLine(int line, Scanner kb) {
  do {
        System.out.println("Please enter two x's and y's values, a width, and color");
        int x1 = kb.nextInt();
        int x2 = kb.nextInt();
        int y1 = kb.nextInt();
        int y2 = kb.nextInt();
        int newWidth = kb.nextInt();
        String color = kb.next();
 } while(!validateLine(x1, y1,  x2,  y2,  newWidth));

  return new Line(x1, x2, y1, y2, color, newWidth);

}

由于文件中的值都采用相同的格式,因此不确定错误是什么。

文件

    Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
  File "/usr/lib64/python2.7/_strptime.py", line 328, in _strptime
    data_string[found.end():])
ValueError: unconverted data remains: 

代码段

2016-06-03 21:53:48.658115      0:00:00.665788
2016-06-03 21:55:00.009529      0:00:00.867230
2016-06-03 22:09:46.813020      0:00:00.797387
2016-06-04 14:05:05.611144      0:00:00.721815
2016-06-04 14:08:09.029460      0:00:00.744576

1 个答案:

答案 0 :(得分:1)

response_time变量中附加了\ r \ n(回车符和换行符),导致出现此错误。所以我使用response_time.strip('\n\r')删除它们。参考(1)

然后出现了timedelta属性错误。

  

AttributeError:'datetime.datetime'对象没有属性   'timedelta'

所以我解决了这个问题。参考(2)

第三,时间增加要发生变量sum需要在顶部初始化为sum = timedelta(0)。参考(3)

这是可行的解决方案。

from datetime import datetime, timedelta
rowCtr = 1
sum = timedelta(0) # (3)
for row in open('data.txt', 'rb'):
    date, response_time = row.split('\t')
    d = datetime.strptime(response_time.strip('\n\r'), '%H:%M:%S.%f') # (1)
    dts = timedelta(hours=d.hour, minutes=d.minute, seconds=d.second, microseconds=d.microsecond) # (2)
    print dts
    sum += dts 
    rowCtr += 1