Alarma mínima y básica de línea de comandos.
#!/usr/bin/env python # -*- coding: utf-8 -*- import time import os not_executed = 1 while(not_executed): dt = list(time.localtime()) hour = dt[3] minute = dt[4] sleep(1) if hour == 8 and minute == 30: # modificar hour y minute a la hora deseada os.system("xdg-open /home/user/ring.ogg") # RingTone (?) not_executed = 0
Comentarios
Facundo
Hay un par de cambios triviales para hacerle: se puede reemplazar el not_executed por un break, no hace falta declarar el encoding, y usar localtime() como corresponde..
#!/usr/bin/env python import time import os while(True): dt = time.localtime() sleep(1) if dt.tm_hour == 8 and dt.tm_min == 30: # modificar hour y minute a la hora deseada os.system("xdg-open /home/user/ring.ogg") # RingTone (?) break
... pero realmente está mal planteado la resolución: no hay que usar un while ahí:
import time import os # modificar hour y minute a la hora deseada HOUR = 8 MIN = 30 t = time.localtime() nowhms = t.tm_hour * 3600 + t.tm_min * 60 + t.tm_sec alarm = HOUR * 3600 + MIN * 60 delta = alarm - nowhms if delta < 0: # tomorrow delta += 3600 * 24 time.sleep(delta) os.system("xdg-open /home/user/ring.ogg") # RingTone (?)
DanielMoisset
Yo prefiero no sacar cuentas de fecha a mano, y en vez que datetime haga el trabajo sucio. Sobre todo porque maneja mejor casos delicados (que pasa si pongo la alarma justo antes de un cambio a horario de verano?) sin tener que pensarlos
import time, datetime import os # modificar hour y minute a la hora deseada HOUR = 8 MIN = 30 now = datetime.datetime.now() alarm = now.replace(hour=HOUR, minute=MIN) if alarm < now: # Set the alarm tomorrow alarm += datetime.timedelta(days=1) time.sleep((alarm-now).seconds) os.system("xdg-open /home/user/ring.ogg") # RingTone (?)
Juancarlospaco
Por lo menos en Linux se necesita el Shebang y declarar encoding, por que sino al usar "Vídeo-de-Música.ogv" de Ringtone traen problemas los acentos.
A esta altura creo que es más importante agregar el correcto coloreado de sintaxis y cuidar la ortografía, a discutir si poner o no el encoding y el shebang. La idea es que las recetas sean genéricas, con ese encoding y ese shebang, no cubris todos los casos. Pej, copias y pegas, y tu editor guarda en latin1??
Si funciona con:
Es más que suficiente. -- JoaquinSorianello 2010-11-08T10:56:40-0300