example - time.clock python
Usar% f con strftime() en Python para obtener microsegundos (6)
Con el módulo de time
python no puedes obtener microsegundos con %f
.
Para aquellos que todavía desean ir con el módulo de time
solamente, aquí hay una solución alternativa:
now = time.time()
mlsec = repr(now).split(''.'')[1][:3]
print time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), time.localtime(now))
Debería obtener algo como 2017-01-16 16: 42: 34.625 EET (sí, uso milisegundos, ya que es bastante).
Para frenar el código en detalles, pegue el código debajo de la consola de Python:
import time
# get current timestamp
now = time.time()
# debug now
now
print now
type(now)
# debug strf time
struct_now = time.localtime(now)
print struct_now
type(struct_now)
# print nicely formatted date
print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now)
# get miliseconds
mlsec = repr(now).split(''.'')[1][:3]
print mlsec
# get your required timestamp string
timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now)
print timestamp
Para fines de aclaración, también pego mi resultado de Python 2.7.12 aquí:
>>> import time
>>> # get current timestamp
... now = time.time()
>>> # debug now
... now
1484578293.519106
>>> print now
1484578293.52
>>> type(now)
<type ''float''>
>>> # debug strf time
... struct_now = time.localtime(now)
>>> print struct_now
time.struct_time(tm_year=2017, tm_mon=1, tm_mday=16, tm_hour=16, tm_min=51, tm_sec=33, tm_wday=0, tm_yday=16, tm_isdst=0)
>>> type(struct_now)
<type ''time.struct_time''>
>>> # print nicely formatted date
... print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now)
2017-01-16 16:51:33 EET
>>> # get miliseconds
... mlsec = repr(now).split(''.'')[1][:3]
>>> print mlsec
519
>>> # get your required timestamp string
... timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now)
>>> print timestamp
2017-01-16 16:51:33.519 EET
>>>
Espero eso ayude.
Estoy tratando de usar strftime () con microsegundos de precisión, lo que parece posible usando% f (como se indica here ). Sin embargo, cuando intento el siguiente código:
import time
import strftime from time
print strftime("%H:%M:%S.%f")
... Obtengo la hora, los minutos y los segundos, pero% f se imprime como% f, sin signos de microsegundos. Estoy ejecutando Python 2.6.5 en Ubuntu, por lo que debería estar bien y debería ser compatible con% f (es compatible con 2.6 o superior, hasta donde yo sé).
Cuando el "% f" para micro segundos no funciona, utilice el siguiente método
import datetime
def getTimeStamp():
dt = datetime.datetime.now()
return dt.strftime("%Y%j%H%M%S") + str(dt.microsecond)
Estás mirando la documentación incorrecta. El módulo de time
tiene documentación diferente .
Puede usar el tiempo de módulo de datetime
esta manera:
>>> from datetime import datetime
>>>
>>> now = datetime.now()
>>> now.strftime("%H:%M:%S.%f")
''12:19:40.948000''
Esto debería hacer el trabajo
import datetime
datetime.datetime.now().strftime("%H:%M:%S.%f")
Imprimirá
HH:MM:SS.microseconds
como este, por ejemplo 14:38:19.425961
Puede usar la función strftime de datetime para obtener esto. El problema es que el tiempo de tiempo acepta un timetuple que no contiene información de microsegundos.
from datetime import datetime
datetime.now().strftime("%H:%M:%S.%f")
Debe hacer el truco!
También puede obtener una precisión de microsegundos desde el módulo de time
usando su función de time()
.
( time.time()
devuelve el tiempo en segundos desde epoch. Su parte fraccionaria es el tiempo en microsegundos, que es lo que desea).
>>> from time import time
>>> time()
... 1310554308.287459 # the fractional part is what you want.
# comparision with strftime -
>>> from datetime import datetime
>>> from time import time
>>> datetime.now().strftime("%f"), time()
... (''287389'', 1310554310.287459)