понедельник, 27 сентября 2010 г.

Python: парсим дату

Иногда достаточно напряжной задачей бывает парсинг даты или времени. Это часто происходит совсем не в силу сложности задачи, а просто от отсутствия понимания, что здесь никакого велосипеда изобретать не нужно, а просто надо правильно использовать ресурсы стандартной библиотеки питона (), которые предлагают элегантные способы решения данной задачи.
Вашему вниманию предлагается ненапряжный (оттяжный) способ парсинга даты в питоне

datetime.strptime(sys.argv[1], '%H:%M')


С помощью которого можно сделать, например, простой-простой будильник (простой-простой, потому что будет работать в рамках одной даты, например, с 3 ночи до 7 утра, что бывает достаточно для программиста, админа или еще какого-нибудь гика).

#-*- coding: UTF-8 -*-
import time
import os
import sys
from datetime import datetime

def play():
    command = "totem ~/bin/alarm.pls >/dev/null 2>/dev/null"
    os.popen(command)

def main():
    try:
        while datetime.now().time() < datetime.strptime(sys.argv[1], '%H:%M').time():
            time.sleep(1)
    except:
        print "Invalid hour:minute value!"
    finally:
        play()
        return

if __name__ == "__main__":
    main()