Преобразование только времени в питоне - PullRequest
0 голосов
/ 19 марта 2012

Я работаю со строками текста в 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

1 Ответ

0 голосов
/ 23 марта 2012

Я выяснил свою проблему, см. Обновление под оригинальным вопросом.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...