Python文件txt的总和时间

时间:2017-11-04 06:23:10

标签: python python-3.x

我正在使用脚本:

import sys
sys.argv
 
entry = 2

t = 0
SEC = 0
min = 0
hrs = 0
 
with open (sys.argv [1]) as fp:
     for in line fp:
         entry+=1
         if entry% 8:
             continue
 
         t + = int (line)
 
sec = t% 60
t // = 60
min = t% 60
hrs = t // 60
 
print ("Total time:% d hours% 02d minutes% 02d seconds"% (hrs, min, sec)

入口:

  

315:31:54   0点00分32秒   一点11分24秒   8时18分十八秒   111:35:56   112:45:26   0时21分33秒

当然要大得多;)

有一个错误:

  

基数为10的int()的无效文字:'112:45:26 \ n'

我检查了10次。输入txt文件中没有白色字符。那是什么原因?

2 个答案:

答案 0 :(得分:1)

11:30:22不是整数字符串的可解析。首先需要将字符串转换为时间戳,这可以通过时间包轻松完成

>>> import time
>>> import datetime
>>> s = "01:12:20"
>>> time.mktime(datetime.datetime.strptime(s, "%h:%M:%s").timetuple())

答案将是您可以使用的数值。您还可以查看deltatime,它可以帮助您完成工作

答案 1 :(得分:0)

在做了一些考虑之后,针对这种情况的最佳方法是自定义转换器,而不是尝试调整Python std库中存在的转换器

# you should change this to an open file - read()
dataset = """315:31:54
        00:00:32
        01:11:24
        08:18:18
        111:35:56
        112:45:26"""

acc = 0

# unfortunatelly this is a non-standard dataset of timestamps, therefore
# the best approach is to create your own converter

for line in dataset.split():
    split_time = line.split(":")
    acc += int(split_time [0]) * 60 * 60 + int(split_time [1]) * 60 + int(split_time[2])


print("total in seconds:", acc) 

>>> total in seconds: 1977810