我正在使用脚本:
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次。输入txt文件中没有白色字符。那是什么原因?基数为10的int()的无效文字:'112:45:26 \ n'
答案 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