¿Cómo elimino los microsegundos de un objeto timedelta?

Hago un cálculo del tiempo promedio, y me gustaría mostrar el promedio resultante sin microsegundos.

avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes) 

Tome el timedetla y elimine sus propios microsegundos, como microsegundos y atributo de solo lectura:

 avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes) avg = avg - datetime.timedelta(microseconds=avg.microseconds) 

Puedes hacer tu propia pequeña función si es una necesidad recurrente:

 import datetime def chop_microseconds(delta): return delta - datetime.timedelta(microseconds=delta.microseconds) 

No he encontrado una mejor solución.

Si es solo para la pantalla, esta idea funciona:

 avgString = str(avg).split(".")[0] 

La idea es tomar solo lo que está antes del punto. Volverá 01:23:45 para 01: 23: 45.1235

Otra opción, dada la timedetla puedes hacer:

 avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds())) 

Puede reemplazar math.ceil() , con math.round() o math.floor() , dependiendo de la situación.

Encontré esto para trabajar para mí:

 start_time = datetime.now() some_work() end time = datetime.now() print str(end_time - start_time)[:-3] 

Salida:

 0:00:01.955 

Pensé en esto después de buscar en https://docs.python.org/3.2/library/datetime.html#timedelta-objects

¡Espero que esto ayude!