Я работаю со строками текста в CSV-файле, подобном этому:
2012-03-16 13:47:31.915 -0400 image
Я хочу иметь возможность запустить цикл for через файл csv и вычесть только время между каждой строкой кода. В настоящее время я могу сделать это только через дату и время, но это вызывает некоторую путаницу. Это то, что я имею сейчас.
newLogFile = csv.reader(open('newLogFile.csv', 'r+'), delimiter="\t")
row_count = sum(1 for row in csv.reader( open('newLogFile.csv') ) )
fmt = '%Y-%m-%d %H:%M:%S.%f'
for row in newLogFile:
time = (row[0] + " " + row[1])
ts1 = datetime.datetime.strptime(time, fmt)
row_count+=1
if row_count == 33:
current = ts1
current = ts1 - current
print ("%s - %s" %(ts1,current))
current = ts1 - current
print current
Вывод выглядит примерно так:
2012-03-16 13:52:09.462000 - 0:01:44.866000
2012-03-16 13:50:24.596000
Я попытался просмотреть модули даты и времени, но не смог найти ничего, что сработало бы. Я знаю, что в вычитании тоже что-то не так, но сначала я хочу получить правильное преобразование.
Спасибо за помощь
ОБНОВЛЕНИЕ:
Я понял мою проблему ...
newLogFile = csv.reader(open('newLogFile.csv', 'r+'), delimiter="\t")
fmt = '%Y-%m-%d %H:%M:%S.%f'
row_count = 0
for row in newLogFile:
time = (row[0] + " " + row[1])
timestamp = strptime(time, fmt)
current_value = mktime(timestamp)
row_count+=1
if row_count == 1:
previous_value = current_value
print ("%s - %s" %(current_value, previous_value))
total_value = current_value - previous_value
print total_value
previous_value = current_value
Я решил установить время в секундах, чтобы узнать более точное и надежное значение. Я также исправил свое вычитание, изменив row_count и установив предыдущее значение в значение current_value перед завершением цикла for